{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 逻辑回归预测芯片质量通过"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**任务:**\n",
    "\n",
    "1、基于chip_test.csv数据，建立逻辑回归模型(二阶边界)，评估模型表现；\n",
    "2、以函数的方式求解边界曲线\n",
    "3、描绘出完整的决策边界曲线"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "@Author  : Flare Zhao\n",
    "@Email: 454209979@qq.com\n",
    "@QQ讨论群：530533630  申请加群的验证信息为订单号（粘贴号码数字即可）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#load data; visualize data;#generate new data\n",
    "#establish model and train it; predict\n",
    "#accuracy\n",
    "#decision boundary\n",
    "#define f(x)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>test1</th>\n",
       "      <th>test2</th>\n",
       "      <th>pass</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.051267</td>\n",
       "      <td>0.69956</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.092742</td>\n",
       "      <td>0.68494</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.213710</td>\n",
       "      <td>0.69225</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.375000</td>\n",
       "      <td>0.50219</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.183760</td>\n",
       "      <td>0.93348</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      test1    test2  pass\n",
       "0  0.051267  0.69956     1\n",
       "1 -0.092742  0.68494     1\n",
       "2 -0.213710  0.69225     1\n",
       "3 -0.375000  0.50219     1\n",
       "4  0.183760  0.93348     0"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#load the data\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "data = pd.read_csv('chip_test.csv')\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0      False\n",
      "1      False\n",
      "2      False\n",
      "3      False\n",
      "4       True\n",
      "       ...  \n",
      "113     True\n",
      "114     True\n",
      "115     True\n",
      "116     True\n",
      "117     True\n",
      "Name: pass, Length: 118, dtype: bool\n"
     ]
    }
   ],
   "source": [
    "#add label mask\n",
    "mask=data.loc[:,'pass']==1\n",
    "print(~mask)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEWCAYAAABIVsEJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3de9zUdZ338ddbDgLmggoZx6Bu1mSRBbww8yITT3jIU7WGq65tFlmxlbXmZQdk3W1Dbbdb7tUID7eWpet6SpMUFVuSahUTEUPClPIC8oCCkHjL4XP/8ftdMAwzc83hd5z5PB+P63Fd8zvMfGeumfn8vqfPV2aGc845V6u90i6Ac865fPIA4pxzri4eQJxzztXFA4hzzrm6eABxzjlXFw8gzjnn6uIBxDnnXF08gDgXkrRa0rEN3scnJD1atG2KpEckbZS0uor7uFHSvzRSjvB+RkoyST0Ltp0s6VFJGyT9SdK1kvZt9LFca/IA4lz8/gzcAFyUdkGA/sC/AEOAg4FhwJWplsjllgcQ5wBJPwRGAPdK2izpq5IOl/TL8Gr9KUlHFRz/CUnPS9ok6QVJZ0s6GJgLfCC8jw0AZvaYmf0QeL6KckwHzga+Gt7HveH2IZLukPRK+HhfKDjnMElLJL0h6SVJ/x7uWhT+3hDe1wfM7Mdmdr+ZvWlmrwPXAu2Nvn6uNfXs/hDnmp+ZnSvpg8CnzOwhSUOBZcC5wP3AMcAdkt4HvAnMASaZ2UpJg4H9zWyFpAvC+5hcZznmSToC6DSzbwBI2gu4F/gJcBZBreEhSSvN7AHgKuAqM/uhpHcAY8O7OxJ4ARhgZtvKPOSRwDP1lNU5r4E4V9o5wHwzm29mO8zsQWAJcFK4fwcwVlJfM1tnZnF+CU8CBpnZZWb2tpk9T1BzmBbu3wr8L0kDzWyzmf26mjuVdBxwHjAzllK7pucBxLnS3g38Tdh8tSFsjpoMDDazPwMfBy4A1km6L6yZ1EzS18Lmpc2S5lYoy5CisnwNODDcfz7wl8Czkh6X9OEqHvdw4MfAx8zsd/WU3TlvwnJul8LU1C8CPzSzT5c8MGg6ekBSX4JO6WuBDxbdR/cPaPavwL9WKEdXWV4ws9Fl7mMVcFbY1PUR4HZJB5Qri6QJwD3AJ83s4VrK61whr4E4t8tLwHvCv28GTpE0VVIPSX0kHSVpmKQDJZ0qaR/g/wGbge0F9zFMUu+uO5W0l6Q+QK/gpvoU7u+mHACPAW9IulhS37A8YyVNCu//HEmDzGwHsCE8ZzvwCkFT2877kjSWoE/nH8zs3jpeI+d28gDi3C7fBr4RNhF9HDiNoKnoFYJawEUEn5m9gK8Aa4HXgA8BnwvvYyFBp/SfJL0abjsS2ALMJxjptQVYUKEc1wNjwuaqu81sO3AKMJ6gU/xV4DqCIbkAJwDPSNpM0KE+zczeMrM3gW8Bi8P7Ojws9yDg+oKmM+9Ed3WRLyjlnHOuHl4Dcc45VxcPIM455+riAcQ551xdPIA455yrS0vNAxk4cKCNHDky7WI451yuPPHEE6+a2aDi7S0VQEaOHMmSJUvSLoZzzuWKpD+U2u5NWM455+riAcQ551xdPIA455yrS0v1gTjn3NatW+ns7OStt95KuyiZ06dPH4YNG0avXr2qOt4DiHOupXR2drLvvvsycuRIJKVdnMwwM9avX09nZyejRo2q6hxvwnLOtZS33nqLAw44wINHEUkccMABNdXMPIA451qOB4/San1dPIA455yriwcQ55bdBt8dC7MGBL+X3ZZ2iZyL1axZs/jOd77T8P14J7prbctug3u/AFu3BLc3vhjcBhh3Znrlci4HvAbiWtvDl+0KHl22bgm2NxuvadXl7ifX0D57IaM67qN99kLufnJNw/e5evVq3ve+93Heeecxbtw4Pvaxj/Hmm29y2WWXMWnSJMaOHcv06dPpWvBvzpw5jBkzhnHjxjFt2jQA/vu//5vx48czfvx4JkyYwKZNmwC48sormTRpEuPGjePSSy/d+Zjf+ta3OOiggzj22GNZuXJlw88BvAbiWt3Gztq255XXtOpy95NruOTOp9myNVjyfs2GLVxy59MAnD5haEP3vXLlSq6//nra29v55Cc/yTXXXMOMGTOYOXMmAOeeey4//elPOeWUU5g9ezYvvPACe++9Nxs2BMvef+c73+Hqq6+mvb2dzZs306dPHxYsWMCqVat47LHHMDNOPfVUFi1axD777MOtt97Kk08+ybZt25g4cSKHHnpoQ+UHr4G4Vtd/WG3b86qValoRuvKBlTuDR5ctW7dz5QONX8EPHz6c9vZ2AM455xweffRRHnnkEd7//vdzyCGHsHDhQp55Jliufty4cZx99tncfPPN9OwZXPe3t7fz5S9/mTlz5rBhwwZ69uzJggULWLBgARMmTGDixIk8++yzrFq1il/84hecccYZ9OvXj7/4i7/g1FNPbbj84AHEtbpjZkKvvrtv69U32N5MWqWmFbG1G7bUtL0WxUNmJfG5z32O22+/naeffppPf/rTO+dk3HfffXz+85/niSee4NBDD2Xbtm10dHRw3XXXsWXLFg4//HCeffZZzIxLLrmEpUuXsnTpUp577jnOP//8ko8XBQ8grrWNOxNOmQP9hwMKfp8yp/madVqlphWxIQP61rS9Fn/84x/51a9+BcAtt9zC5MmTARg4cCCbN2/m9ttvB2DHjh28+OKLTJkyhSuuuIINGzawefNmfv/733PIIYdw8cUX09bWxrPPPsvUqVO54YYb2Lx5MwBr1qzh5Zdf5sgjj+Suu+5iy5YtbNq0iXvvvbfh8oP3gTgXBItmCxjFjpm5ex8INGdNK2IXTT1otz4QgL69enDR1IMavu+DDz6Ym266ic985jOMHj2az372s7z++usccsghjBw5kkmTJgGwfft2zjnnHDZu3IiZceGFFzJgwAC++c1v8sgjj9CjRw/GjBnDiSeeyN57782KFSv4wAc+AMA73vEObr75ZiZOnMjHP/5xxo8fz7vf/W4++MEPNlx+AHX18reCtrY28wWlXMtadlvQ57GxM6h5HDOz+QNnCStWrODggw+u+vi7n1zDlQ+sZO2GLQwZ0JeLph7UcAf66tWr+fCHP8zy5csbup84lHp9JD1hZm3Fx3oNxLlW0Qo1rRicPmFowwGjWXkfiHPOJWzkyJGZrH3UKtUAIukGSS9LKvlKKjBH0nOSlkmaWLDvBEkrw30dyZW6CfkEs+r5a+XcTmnXQG4ETqiw/0RgdPgzHfgegKQewNXh/jHAWZLGxFrSZtU1wWzji4DtmmDWzF+M9QaBVnytnKsg1QBiZouA1yocchrwAwv8GhggaTBwGPCcmT1vZm8Dt4bHulq12gSzRoJAq71WznUj7RpId4YCLxbc7gy3ldu+B0nTJS2RtOSVV16JraC51WoTzBoJAq32WjnXjawHkFJTJ63C9j03ms0zszYzaxs0aFCkhWsKGZpgFkfSuj00EgQy9Fq5/JszZw4HH3wwZ599dsn9S5Ys4QtfCPKV3XjjjcyYMaOm+x85ciSvvvpqw+WsJOsBpBMYXnB7GLC2wnZXq4yk8uhKWrdmwxaMXUnrIg8ijQSBjLxWrjlcc801zJ8/nx/96Ecl97e1tTFnzpyES1WbrAeQe4C/C0djHQ5sNLN1wOPAaEmjJPUGpoXHulplJJVHnEnrdtNIEMjIa+USFsPIuwsuuIDnn3+eU089lcsvv5wjjjiCCRMmcMQRR+xMtf7zn/+cD3/4w3uc+8orr/DRj36USZMmMWnSJBYvXgzA+vXrOf7445kwYQKf+cxnSGKSeKoTCSXdAhwFDJTUCVwK9AIws7nAfOAk4DngTeDvw33bJM0AHgB6ADeY2TOJP4FmkYEJZnEmrdtN1/Osd0Z2Wq+VzyJPR0xp8OfOncv999/PI488Qu/evfnKV75Cz549eeihh/ja177GHXfcUfbcL37xi1x44YVMnjyZP/7xj0ydOpUVK1bwT//0T0yePJmZM2dy3333MW/evLrLV61UA4iZndXNfgM+X2bffIIA49IWwZfbkAF9WVMiWESRtG4PSQSBKL/wfS2P9FQadBHRa79x40bOO+88Vq1ahSS2bt1a8fiHHnqI3/72tztvv/HGG2zatIlFixZx5513AnDyySez3377RVK+SrLehOWyLqK5ERdNPYi+vXrsti2qpHWJi3q+iA8fTk8CI++++c1vMmXKFJYvX8699967M4V7OTt27OBXv/rVzpTta9asYd999wXiSdleiQeQVhRlm25EX26nTxjKtz9yCEMH9EXA0AF9+fZHDslnDqKov/B9+HB6Ehh5t3HjRoYODd7nN954Y7fHH3/88fzHf/zHzttLly4F4Mgjj9zZIf+zn/2M119/PbIyluMBpNVEfXUc4Zfb6ROGsrjjaF6YfTKLO47OZ/CA6L/wffhw9+JKMZPAyLuvfvWrXHLJJbS3t7N9+/Zuj58zZw5Llixh3LhxjBkzhrlz5wJw6aWXsmjRIiZOnMiCBQsYMWJEZGUsx9O5t5rvjg2DR5H+w+HCOpK7RX1/zSDq16S4DwSCLzEfARao8fWpNZ17qw1gqCWdu9dAWk3UV8c+N2JPUb8mPny4srj7iMadGQT+WRuC3/667+TrgbSa/sPKXB3X2RzS6LDYZhTHa5KBodaZ5X1EqfEA0mriWNrUv9z25K9Jcuq4KDKzxEcs5UGtXRrehNVqvDnENZsamwz79OnD+vXrE5mpnSdmxvr16+nTp0/V53gNpBX51bFrJjU2GQ4bNozOzk48O/ee+vTpw7Bh1TdnewBxzlUvqyOSargo6tWrF6NGjYq5QK3BA4hzJdz95BqufGAlazdsYciAvlw09aD8zkuJiqdUcUU8gLimEsUXf1dq+a7swF2p5YHWDiIJ5IVy+eKd6K5pRLWmSGKp5fPGh8u6Ih5AXGqiXoEwqi/+RFLLR5l6I640HsU8pYor4gHEpSKOFQij+uIvl0I+stTyUeYjizq3WSWedcAV8QDiUhFHM1FUX/yxp5aPMvVGkqnefQ6RK5L2ioQnAFcRrCp4nZnNLtp/EdC14nxP4GBgkJm9Jmk1sAnYDmwrlejLZVcczUQXTT1ot85vqO+Lv6ujPLZRWFH2JSTdLxHFHKKsDgV2NUstgEjqAVwNHAd0Ao9LusfMdi61ZWZXAleGx58CXGhmrxXczRQzezXBYruIxLECYZRf/KdPGBrfiKso85FFndssbj4UuKmk2YR1GPCcmT1vZm8DtwKnVTj+LOCWRErmYhdXM1Eu1hSJsi8hb/0SvrpiU0kzgAwFCi+dOsNte5DUDzgBKFxp3oAFkp6QND22UrpYNNUKhLWKsi8hb/0SUTa5JTX6zJWVZh9IqVSY5bKbnQIsLmq+ajeztZLeCTwo6VkzW7THgwTBZTqQyApdrnqxNhNlXZT5yPKU2yyqJjdvCsuENGsgncDwgtvDgLVljp1GUfOVma0Nf78M3EXQJLYHM5tnZm1m1jZo0KCGC50rcV6h+dWfq0dUTW7eFJYJadZAHgdGSxoFrCEIEn9bfJCk/sCHgHMKtu0D7GVmm8K/jwf8nVMoziu0FK/+yqUqyVLuqiyVpTuJlzWqxbZ8VnwmpBZAzGybpBnAAwTDeG8ws2ckXRDunxseegawwMz+XHD6gcBd4YIwPYEfm9n9yZU+InEOZ4wzb1FKOZHK5aha8ofXuOOJNTXnrorjyzNPebRSK2sUTW55G33WpFKdSGhm883sL83svWb2rXDb3ILggZndaGbTis573sz+Ovz5q65zcyXuGcRxXqGldPVXbvLhLf/zYs2TEuOYCV+pjFnMo5Wnsu4hb6PPmpTPRE9L3G24ceYtSiknUrlJhtvLrCxXaVJiXF+eieTRikjUZY06t1lFWRh95v2AHkBSE/dVfJxXaCld/ZWbZNijzNrWlSYlxvVFH3serQhFWda4anQVjTsTLlwOszYEv5MOHknlIMswDyBpifsqPs4rtJSu/spNPjzr/cPptdfuQaTXXqo4KTGuL/rY82hFKMqy5ro5rB4+CgzwBaXSc8zM3UcyQfRX8TV0VtbcoZzC3INyqUoA/vPxog7V0pWSnaLKm1VtGbPWgQ7RljWzTXdxDVTxUWCAB5D0RDWcMQJ5GjlUavJh++yFbN2+ez/I1u3GlQ+sLFv+OL/o8zRBMqqyxpHbrGFxDjf3UWCAB5B0ZWQGcaXmhzx8EdZ79ZunL/pIxXBVHleNriFxDjdPogUhBzyAuOw2P1Qpk1e/WRXTVXkmm+7ibGbKUAtCmjyA5FSUk+Dy/gWcyavfrIrxqjyxGl21Nai4m5ky0oKQJh+FlUNRD5nM08ihUlo6s2+t8t75W8vwWZ9sGDtZmUlYzaitrc2WLFmSdjEa1j57Yckaw9ABfVnccXRd95mn/E3NKpH/wXfHlrwq79wxkI/3uzb7//cy5af/8GAuSDFf/TASkp4oteqrN2HlUBx9Fi3boZwRiY2EK9H5+6b15optZ2Z69N1OtdagvJkpVt6ElUN5mu3sqpPYRLyCSaA7EJ07BtKx9VPcs2NyfI8ZpZTS6LjSvAaSQ95pXJ3umoSy1GyX6Ei48Kr8vR33lVzBLdOj73z4bKZ4AElaBG2ymRwymTHdNQllbfJkuZFwA/r1on32wlj+z7kcfefDZzPFO9GTVDwGH4KrpyyvYZ1T3Q00iGMgQiOKAxpArx4Cg607dn1G+/bqEdkIs1KPGeX9u+ZRrhPd+0CS5AnYEtNdk1DWJk+WGoq8T++euwUPKN1HUW8adR/+7BrlTVhJyvsY/Bzprnkmi803xSPhRnXcV/K4wiDXaFOcj75zjUi1BiLpBEkrJT0nqaPE/qMkbZS0NPyZWe25mdTEI0gSXUyoCt1NjszD5MlqRtu1XBr1pPhiUVVJLYBI6gFcDZwIjAHOkjSmxKG/MLPx4c9lNZ6bLXHMjM3AGz2VxYS60V3zTB6ab6oJcllrimtUJi5EfLGoqqXZhHUY8JyZPQ8g6VbgNOC3MZ+bnqhHkMSZrroGWc3m213zTNabb6oZbZfFprh6ZWZkXJxZfJtMmgFkKFCYk6ATeH+J4z4g6SlgLfCPZvZMDeciaTowHWDEiBERFLtBUc6MzcgbvdGr4CzNx8ia7oJcM80JysyFiPdVVi3NAFJqzbjiMcW/Ad5tZpslnQTcDYyu8txgo9k8YB4Ew3jrL24G1fFGj+PLupGr4MxcdeZUM80JykxznC8WVbU0O9E7geEFt4cR1DJ2MrM3zGxz+Pd8oJekgdWc2xJq7JSPq6+ikQ5p7wRu3OkThrK442hemH0yizuOzmXwgAyl6PEsvlVLM4A8DoyWNEpSb2AacE/hAZLeJUnh34cRlHd9Nee2hBrf6HF9WTfSIZ2Zq06XujRGxpXstC/IFwYKfvtk35JSa8Iys22SZgAPAD2AG8zsGUkXhPvnAh8DPitpG7AFmGbB1PmS56byRNJUY6d8nF/W9XZIN1MnsGtM0s1xlZtPPYtvNTyVSQvJWvoO8HQaLj1Z/DxklacycZmcPJeH+RiuOXnzaeM8lUkLyeqInazPxyjkQ46bhzefNs4DSIvJ05d11viQ4+bSTHNo0uJNWM5VyYccNxdvPm2c10Ccq5K3mTcfr5E3xmsgzlUpMxPdXPPIQDLURngAcbmTVsbWLI5icznWBFl/PYC4XEkzdby3mbtINcEKpd4HkhM+fDSQdsZWbzN3kWmCrL9eA8mBLC7YlBbvyHZNowlWKPUAUq0UO7vyNHw07v4J78h2TaMJsv56AKlGyp1debnqTqKm5B3Zrmk0QdZf7wOpRsor/+Ul5UIS/RNZTcfiXF2iXKE0BR5AqlFPZ9ey2yJb+zwvKReSqil5R7Zz2eBNWNWotbMr4iavvAwf9f4J11JyPgkwCl4DqcYxM4MAUNiMVamzK4YmrzxcdeelpuTyI7PD17suErs+510XiZDrJqlaeQ2kGrV2djXB+O565KWm5PIh08PXm2ASYBRSrYFIOgG4imBZ2uvMbHbR/rOBi8Obm4HPmtlT4b7VwCZgO7Ct1GpZkaqls6v/sLD5qsT2JpeHmpLLh7QnjVbUoheJxVKrgUjqAVwNnAiMAc6SNKbosBeAD5nZOOCfgXlF+6eY2fjYg0etmmB8t3Npy/Tw9SaYBBiFigFE0lRJ50saWbT9kxE89mHAc2b2vJm9DdwKnFZ4gJn90sxeD2/+GsjHf6cJxnc7l7ZMD8rwi0SgQhOWpH8FJgO/Ab4m6X+b2f8Jd88AbmjwsYcChe08ncD7Kxx/PvCzgtsGLJBkwPfNrLh2AoCk6cB0gBEjRjRU4JrkfHx3l8x2Yrqml+lBGV2f7YiG6udVpT6QU4AJZrZN0izgx5LeY2YXAorgsUvdh5U8UJpCEEAmF2xuN7O1kt4JPCjpWTNbtMcdBoFlHkBbW1vJ+28VtQYDX8LVpSnzk0ab5CKxEZUCSE8z2wZgZhsknQLMk/RfQO8IHrsTGF5wexiwtvggSeOA64ATzWx913YzWxv+flnSXQRNYnsEEBeoJxhkuhPTtQQflJFtlfpAfi/pQ103zGy7mZ0PrAQOjuCxHwdGSxolqTcwDbin8ABJI4A7gXPN7HcF2/eRtG/X38DxwPIIytS06knImOlOTOdc6irVQP6m1EYz+4ak7zX6wGHT2AzgAYJhvDeY2TOSLgj3zwVmAgcA10iCXcN1DwTuCrf1BH5sZvc3WqZmVk8wyEsOLudcOsoGEDPbAiDpYTM7pmj3D4DibTUzs/nA/KJtcwv+/hTwqRLnPQ/8daOP30rqCQZZ7cT0jn3nsqHSKKw+QD9goKT92NXp/RfAkATK5iJUTzDIYiemd+y7Qn4xka5KTVifAb5EECyeYFcAeYNgAqDLkXqDQdY6Mb1j33Xxi4n0VWrCugq4StI/FMz/cDmWtWBQD+/Yd138YiJ91aQy+VPBiKdvSLpT0sSYy+VcSZmenewS5RcT6asmgHzTzDZJmgxMBW4CGh6F5Vw9fElb18UvJtJXTQDpqiOeDHzPzH5CNBMJnauZp4x3XfxiIn3VpHNfI+n7wLHA5ZL2xtcRcSlqhr4c17gsjhLMjAiX1K5EZpXTQ0nqB5wAPG1mqyQNBg4xswWRlyZmbW1ttmTJkrSL4Zxz8SleLRGCTMENZASX9ESpZTO6rUmY2ZvAy+xKZLgNWFVXKZxzzlXW6FrrCa6W2G0TlqRLgTbgIOD/Ar2Am4H2yEvjnHOtLIq11hNcLbGavowzgFOBP8POLLj7Rl4S55xrdVHUHhJcLbGaAPK2BR0lBjuz3zrnnItaFLWHBFdLrCaA3BaOwhog6dPAQ8C1kZekFTXa1umcay5R1B4SXFK7mmG8g4DbCXJgHUSQYv3YyEvSaqJo60yZJ7JzLmLHzCw9gqrW2kNCqyVWM4z3N2Y2sWjbMjMbF2vJYpCpYbzfHRsEjWL9h8OF2V8bqziRHQSTuKqd1OfBx7kyEprDUYtyw3grpXP/LPA54D2SlhXs2hdYHH0RW0yCIyXi0EgiO8+i2vz8AqEGpQJGDi4ioXIfyI+BUwiWmT2l4OdQMzsnigeXdIKklZKek9RRYr8kzQn3LytM4tjduZkX0UiJu59cQ/vshYzquI/22Qu5+8k1ERSue40ksqtneV2XH10XCGs2bMHYdYGQ1HszV7qasje+CNiupuyc9IeWDSBmttHMVpvZWWb2h4Kf16J4YEk9CNYVOREYA5wlaUzRYScCo8Of6YRJHKs8N9siGCmR5ge1kUR2nkW1ufkFQg0SnPQXhzRzWh0GPGdmz5vZ28CtwGlFx5wG/MACvyYYCTa4ynOzLYKREml+UBtJZFdv8EmrtuVq4xcINch5U3Y1o7DiMhQo7EXuBN5fxTFDqzwXAEnTCWovjBgxorESR63BkRJpflAbSWRXz/K63m+SH0MG9GVNifegp1kvof+wMoNpop/0F4c0A4hKbCseElbumGrODTaazQPmQTAKq5YCZl3aH9R6s+LWE3x89bn8qOcCoSEZHLVUtaiG7aYkzQDSCQwvuD0MWFvlMb2rOLfpJf5BjVCtwcebRfIj0TTreZ9P1VXGnAbANAPI48BoSaOANcA04G+LjrkHmCHpVoImqo1mtk7SK1Wc2/RaaT2EtGtbrjaJrdlSqRM6J1/CSU36i0NqAcTMtkmaATwA9ABuMLNnJF0Q7p8LzAdOAp4D3gT+vtK5KTyNdBRU2U/vP4zTT8rPFcseqmx+yHNty8Uo553QeZdmDQQzm08QJAq3zS3424DPV3tuS8h7lb1QDc+llWpbrgY574TOu25TmTST1FOZRNHZl/MUKLtppufi0hHD6nuRlSun/Rql1JzKxEUsqppDM1XZm+m5uHRksRO6mVoJuuEBJClRdfY1U5W9mZ6LS0/WOqGboWO/SmnORG8tUV1tJ7hYTOya6bk416WFatYeQJIS1TKTCS4WE7tmei7OdUlwSdm0eRNWUqKccRpnlT3pzr+sNT8416iczy6vhQeQpGSxs69YC3X+ueaTmTVI8vBZj4gP43W7+LBal1ONrpDpKvNhvK57LdT5l4TMXBG3AE+2mQ7vRHe7tFDnX9x8Vb5kebLNdHgNxO3SQp1/pURZY/Ar4t3FXRtrNNmm1xbr4wHE7ZJQ518WP6xRL1jlV8S7JLEYWCPJNn2xsvp5AHG7i3lYbVY/rFHXGDz9/C5J1MYaSbbptcX6eQDJoiZLxFao1g9rUrWVqGsMnn5+l6RqY/WuQZJYbbEJP9feiZ41XXMxNr4I2K65GMtuS7tkkajlw5pkR3S5mkG9NYbTJwzl2x85hKED+iJg6IC+LTukNOrXNmqJlK9JP9ceQLKmUiK2JlDLh7VSbSVqF009iL69euy2rdEaw+kThrK442hemH0yizuOzkTwuPvJNbTPXsiojvton70wkVFhcby2UUqkfE36ufYmrKxp8rkYtTTtJNkR3QoLVqXV/5TEa9tIU2ci//sm/VynEkAk7Q/8JzASWA2caWavFx0zHPgB8C5gBzDPzK4K980CPg28Eh7+tXCFwvxr8hTntXxYk+6ITmwd75Sk2Vkc52sbRWCM/X/fpJ/rtEti5KEAAA+lSURBVJqwOoCHzWw08HB4u9g24CtmdjBwOPB5SWMK9n/XzMaHP9kNHstuC1KEzBoQ/O6uzTNPKc5rfW6hapt2st70kTfNOrQ4yabOuuXpc12DtJqwTgOOCv++Cfg5cHHhAWa2DlgX/r1J0gpgKPDbxErZqHqSE2Y4EVthM8F573iMb9hcem5/K9gZQ+LFRpsWsjjfJE3NOrQ4F4Exw5/rRqSSTFHSBjMbUHD7dTPbr8LxI4FFwFgzeyNswvoE8AawhKCm8nqZc6cD0wFGjBhx6B/+8IeInkUVmig5YXEzwaO9v8CwvV7d88CMPDdPrrenZn1N2mcvLBkYhw7oy+KOo1MoUfMpl0wxtiYsSQ9JWl7i57Qa7+cdwB3Al8zsjXDz94D3AuMJain/Vu58M5tnZm1m1jZo0KA6n02dmqjjrLiZYIhKBA/IzHPLRbNGwpp1aLE3daYntiYsMzu23D5JL0kabGbrJA0GXi5zXC+C4PEjM7uz4L5fKjjmWuCn0ZU8QnnoOKtyclNxc8BaG8iwUkEkI88tF80aKWjGgQKtMIIuq9LqA7kHOA+YHf7+SfEBkgRcD6wws38v2jc47CMBOANIv82klKwnJ6yhj6a4/fyKbWcyu9d19NPbuw7K0HNr1vZ+V1ozBsY8SGsU1mzgOEmrgOPC20gaIqlrRFU7cC5wtKSl4c9J4b4rJD0taRkwBbgw4fJXJ+trftcwuam4meCeHZOZadN5s+9gsvjcvFnDufj5ioStbNYAoNT/XzBrwx5b8zaqKW/ldS6rfEVCt6ca+2jy1kyQt/I6lzeeC6uVNenkJudcMjyAtLKs99E45zLNm7BaXcwLSKWmCddecDnQYu87DyCu+dSTQsa5RrXg+86bsFzzadK1F1zGteD7zmsgrvmUSadiGzuZPHuhD+t18Wii1EXV8gDimk+Z4clr7YCds9OjWkzJ55q4nfKQuihi3oSVZ3Wux5Hbx61WieHJW9iby7fu3g7daHLFJNdsr6YsSS9V262sv0+i1oLD4j2A5FVXh93GFwHb1WEX94c0rcetRYnhyR1vn889OybvcWgjyRWzkvE3S4Fspzy8T6LWgsPivQkrryp12MX5hk3rcWtVNDx5yeyFEHFyxaxk/E1zqdqy8vI+iVqzDosvw2sgeZVWh13eOgrDZpRH3/oIi/f+Aqfu9ejOXY0mVywXfJLO+JuVQLabvL1PXF08gORVuY65uDvs0nrcehQ0owhjqF7l8t7Xc9pej0aymFJWMv5mJZDtJk/vE1c3DyB5lVaHXZ46Cks0o/Tl/3HVoHtZ3HF0w807WVnhLyuBbDd5ep+4unkfSF51tbMmnTYhrcetRwLNKFnI+JvJFfny9D5xdfP1QFzz+u7YMuPyh8OF2VzE0rksKrceiDdhueblzSjOxSqVACJpf0kPSloV/t6vzHGrw6Vrl0paUuv5rsW14Lh855KUShOWpCuA18xstqQOYD8zu7jEcauBNjN7tZ7zi3kTlssqT4nisixrS9qeBhwV/n0T8HOg2wAQ4fnOZUbXTPKuyYBR5enKi1wHzxZb/6NYWgHkQDNbB2Bm6yS9s8xxBiyQZMD3zWxejecjaTowHWDEiBGRPQHnopLJmeQRqCYwxB08Yw1OLbj+R7HY+kAkPSRpeYmf02q4m3YzmwicCHxe0pG1lsPM5plZm5m1DRo0qNbTnYtdJmeSN6ja/Fxx5hOLPUdYC67/USy2AGJmx5rZ2BI/PwFekjQYIPz9cpn7WBv+fhm4Czgs3FXV+c7lQSZnkjeo2sAQZ/CMPdmlp2tJbRjvPcB54d/nAT8pPkDSPpL27fobOB5YXu35zuVFJmeSF6k1XXy1gSHO4Bl5cCpOT9+3zODPFkrXklYAmQ0cJ2kVcFx4G0lDJM0PjzkQeFTSU8BjwH1mdn+l853Lo6ykRCmnnqagagNDnMEz0uBUKj3925thr167H9di84x8JrpzpaQ5uibtkT1Fjz/rzx/lxs2H7XHY0AF9WdxxdMm7KO4chyAwlAqMcXV011KGbpXLatB3f+i9T9OPwsraMF7nsivN0TVpj+wp8fhftWt4ba+391iQq1JTUFX5ucJAdfrGTk7vPwz+diaMOzmypxJpjrBy/RpbXoeLX2iglPnmNRDniqWZQ6uKx451aGqZx+/cMZDJb8/ZbVulGki3igMVBM0/Wc0U0OJ51TwXlnPVSnN0TTePHfvQ1DKPP0Trd7vdcD9F3obAel61kjyAOFcszcWQunns2Iemlnn8t/q9K9pO/rwNgfW8aiV5H4hzxY6ZWbp5JYmrzW4eO/ZJh2Uev9+Jl7F4XJ3NVaX0H1amSSjDQ2BbbL3zangNxGVb8dj7ZbfF/5hpXm1289ixTzpM6rl7k1BT8E50l11562hNQKRDU9OW9nBlVzUfxuvyp1JHa4t+0WRy+dp6eZNQ7nkAcdmVt47WhGRhHXbnwPtAXJalORrKOdctDyAuu7yj1blM8wDissvH3juXad4H4rLNO1qdyyyvgTjnnKuLBxDnnHN18QDinMuHNLISuIpSCSCS9pf0oKRV4e891oaUdJCkpQU/b0j6UrhvlqQ1BftOSv5ZOOcSU2pFwHu/4EEkZWnVQDqAh81sNPBweHs3ZrbSzMab2XjgUOBN4K6CQ77btd/M5hef71zm+BV0/fKW/r1FpBVATgNuCv++CTi9m+OPAX5vZn+ItVTOxSULV9B5DmCelSCT0gogB5rZOoDw9zu7OX4acEvRthmSlkm6oVQTWBdJ0yUtkbTklVdeaazUztUr7SvoLASwRnhWgkyKLYBIekjS8hI/p9V4P72BU4H/Ktj8PeC9wHhgHfBv5c43s3lm1mZmbYMGDarjmTgXgbSvoNMOYI3yrASZFNtEQjM7ttw+SS9JGmxm6yQNBl6ucFcnAr8xs5cK7nvn35KuBX4aRZmdi03aCyilHcAa1TWZ1NO/Z0paM9HvAc4DZoe/f1Lh2LMoar7qCj7hzTOA5l/V3uVbmqscQvoBLAqelSBz0uoDmQ0cJ2kVcFx4G0lDJO0cUSWpX7j/zqLzr5D0tKRlwBTgwmSK7Vyd0s7r5U1ALga+IqFzrcJXAHR18hUJnWt13gTkIuapTJxzztXFA4hzzrm6eABxzjlXFw8gzjnn6uIBxDnnXF08gDjnnKuLBxDnnHN18QDinHOuLi01E13SK0Aaa4oMBF5N4XGrkeWyQbbLl+WyQbbLl+WyQbbLl0bZ3m1me6Qzb6kAkhZJS0qlAciCLJcNsl2+LJcNsl2+LJcNsl2+LJXNm7Ccc87VxQOIc865ungASca8tAtQQZbLBtkuX5bLBtkuX5bLBtkuX2bK5n0gzjnn6uI1EOecc3XxAOKcc64uHkAiIml/SQ9KWhX+3q/EMQdJWlrw84akL4X7ZklaU7DvpCTLFh63OlwqeKmkJbWeH2f5JA2X9IikFZKekfTFgn2Rv3aSTpC0UtJzkjpK7JekOeH+ZZImVntuAmU7OyzTMkm/lPTXBftK/o8TLt9RkjYW/L9mVntuAmW7qKBcyyVtl7R/uC/W107SDZJelrS8zP7U3nNlmZn/RPADXAF0hH93AJd3c3wP4E8EE3QAZgH/mGbZgNXAwEafWxzlAwYDE8O/9wV+B4yJ47UL/ze/B94D9Aae6nqsgmNOAn4GCDgc+J9qz02gbEcA+4V/n9hVtkr/44TLdxTw03rOjbtsRcefAixM8LU7EpgILC+zP5X3XKUfr4FE5zTgpvDvm4DTuzn+GOD3ZpbEzPhayxb1+Q3fv5mtM7PfhH9vAlYAQyMuR5fDgOfM7Hkzexu4NSxjcZl/YIFfAwMkDa7y3FjLZma/NLPXw5u/BoZF+PgNly+mc+O4/7OAWyJ8/IrMbBHwWoVD0nrPleUBJDoHmtk6CL7sgHd2c/w09nxzzgirpjdE3ExUbdkMWCDpCUnT6zg/7vIBIGkkMAH4n4LNUb52Q4EXC253smewKndMNefGXbZC5xNctXYp9z9OunwfkPSUpJ9J+qsaz427bEjqB5wA3FGwOe7XrjtpvefK6pnEgzQLSQ8B7yqx6+s13k9v4FTgkoLN3wP+meBN+s/AvwGfTLhs7Wa2VtI7gQclPRteFTUswtfuHQQf6i+Z2Rvh5oZeu1IPU2Jb8Xj3csdUc24jqr5/SVMIAsjkgs2x/Y9rKN9vCJpuN4f9VXcDo6s8N+6ydTkFWGxmhTWCuF+77qT1nivLA0gNzOzYcvskvSRpsJmtC6uVL1e4qxOB35jZSwX3vfNvSdcCP026bGa2Nvz9sqS7CKrGi4Banlts5ZPUiyB4/MjM7iy474ZeuxI6geEFt4cBa6s8pncV58ZdNiSNA64DTjSz9V3bK/yPEytfQeDHzOZLukbSwGrOjbtsBfZoIUjgtetOWu+5srwJKzr3AOeFf58H/KTCsXu0rYZfnF3OAEqOxIirbJL2kbRv19/A8QVlqOW5xVU+AdcDK8zs34v2Rf3aPQ6MljQqrC1OC8tYXOa/C0fGHA5sDJvfqjk31rJJGgHcCZxrZr8r2F7pf5xk+d4V/j+RdBjB99D6as6Nu2xhmfoDH6LgfZjQa9edtN5z5SXRU98KP8ABwMPAqvD3/uH2IcD8guP6EXxY+hed/0PgaWBZ+M8fnGTZCEZwPBX+PAN8vbvzEy7fZIJq+TJgafhzUlyvHcGIl98RjG75erjtAuCC8G8BV4f7nwbaKp0b8evVXdmuA14veJ2WdPc/Trh8M8LHf4qgk/+IrLx24e1PALcWnRf7a0dwUbkO2EpQ2zg/K++5cj+eysQ551xdvAnLOedcXTyAOOecq4sHEOecc3XxAOKcc64uHkCcc87VxQOIczGQNEDS5+o890thKo2u29+S9KKkzdGV0LnGeQBxLh4DgLoCCPAlgvlCXe4lmPXsXKZ4KhPn4jEbeK+kpcCDBOlZzgT2Bu4ys0vDGc23EaSe6EGQx+tAggmUj0h61cymWJB5lXDytnOZ4QHEuXh0AGPNbLyk44GPEdQiBNwj6UhgELDWzE6GIIWGmW2U9GVgipm9mlbhnauGN2E5F7/jw58nCTLRvo8g++zTwLGSLpf0QTPbmGIZnauZ10Cci5+Ab5vZ9/fYIR1KkMfo25IWmNlliZfOuTp5DcS5eGwiWHoX4AHgk+FaJkgaKumdkoYAb5rZzcB3CJYzLT7XuczyAOJcDCxYg2OxpOXAccCPgV9Jehq4nSBAHAI8Fna0fx34l/D0ecDPJD0CIOkKSZ1AP0mdkmYl+2ycK82z8TrnnKuL10Ccc87VxQOIc865ungAcc45VxcPIM455+riAcQ551xdPIA455yriwcQ55xzdfn/6p6fcx4e8NQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#visualize the data\n",
    "%matplotlib inline \n",
    "from matplotlib import pyplot as plt\n",
    "fig1 = plt.figure()\n",
    "passed=plt.scatter(data.loc[:,'test1'][mask],data.loc[:,'test2'][mask])\n",
    "failed=plt.scatter(data.loc[:,'test1'][~mask],data.loc[:,'test2'][~mask])\n",
    "plt.title('test1-test2')\n",
    "plt.xlabel('test1')\n",
    "plt.ylabel('test2')\n",
    "plt.legend((passed,failed),('passed','failed'))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "           X1        X2      X1_2      X2_2     X1_X2\n",
      "0    0.051267  0.699560  0.002628  0.489384  0.035864\n",
      "1   -0.092742  0.684940  0.008601  0.469143 -0.063523\n",
      "2   -0.213710  0.692250  0.045672  0.479210 -0.147941\n",
      "3   -0.375000  0.502190  0.140625  0.252195 -0.188321\n",
      "4    0.183760  0.933480  0.033768  0.871385  0.171536\n",
      "..        ...       ...       ...       ...       ...\n",
      "113 -0.720620  0.538740  0.519293  0.290241 -0.388227\n",
      "114 -0.593890  0.494880  0.352705  0.244906 -0.293904\n",
      "115 -0.484450  0.999270  0.234692  0.998541 -0.484096\n",
      "116 -0.006336  0.999270  0.000040  0.998541 -0.006332\n",
      "117  0.632650 -0.030612  0.400246  0.000937 -0.019367\n",
      "\n",
      "[118 rows x 5 columns]\n"
     ]
    }
   ],
   "source": [
    "#define X,y\n",
    "X = data.drop(['pass'],axis=1)\n",
    "y = data.loc[:,'pass']\n",
    "X1 = data.loc[:,'test1']\n",
    "X2 = data.loc[:,'test2']\n",
    "X1.head()\n",
    "#create new data\n",
    "X1_2 = X1*X1\n",
    "X2_2 = X2*X2\n",
    "X1_X2 = X1*X2\n",
    "X_new = {'X1':X1,'X2':X2,'X1_2':X1_2,'X2_2':X2_2,'X1_X2':X1_X2}\n",
    "X_new = pd.DataFrame(X_new)\n",
    "print(X_new)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "                   intercept_scaling=1, l1_ratio=None, max_iter=100,\n",
       "                   multi_class='auto', n_jobs=None, penalty='l2',\n",
       "                   random_state=None, solver='lbfgs', tol=0.0001, verbose=0,\n",
       "                   warm_start=False)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#establish new model and train\n",
    "#establish the model and train it\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "LR2 = LogisticRegression()\n",
    "LR2.fit(X_new,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8135593220338984\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "y2_predict = LR2.predict(X_new)\n",
    "accuracy2 = accuracy_score(y,y2_predict)\n",
    "print(accuracy2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\niubi\\Anaconda3\\envs\\env_ttest\\lib\\site-packages\\pandas\\core\\series.py:856: RuntimeWarning: invalid value encountered in sqrt\n",
      "  result = getattr(ufunc, method)(*inputs, **kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X1_new = X1.sort_values()\n",
    "theta0 = LR2.intercept_\n",
    "theta1,theta2,theta3,theta4,theta5 = LR2.coef_[0][0],LR2.coef_[0][1],LR2.coef_[0][2],LR2.coef_[0][3],LR2.coef_[0][4]\n",
    "a = theta4\n",
    "b = theta5*X1_new+theta2\n",
    "c = theta0+theta1*X1_new+theta3*X1_new*X1_new\n",
    "X2_new_boundary = (-b+np.sqrt(b*b-4*a*c))/(2*a)\n",
    "\n",
    "fig2 = plt.figure()\n",
    "passed=plt.scatter(data.loc[:,'test1'][mask],data.loc[:,'test2'][mask])\n",
    "failed=plt.scatter(data.loc[:,'test1'][~mask],data.loc[:,'test2'][~mask])\n",
    "plt.plot(X1_new,X2_new_boundary)\n",
    "plt.title('test1-test2')\n",
    "plt.xlabel('test1')\n",
    "plt.ylabel('test2')\n",
    "plt.legend((passed,failed),('passed','failed'))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "112   -0.83007\n",
       "86    -0.75518\n",
       "84    -0.74366\n",
       "111   -0.72638\n",
       "113   -0.72062\n",
       "        ...   \n",
       "70     0.89804\n",
       "65     0.92684\n",
       "68     0.93836\n",
       "67     0.96141\n",
       "101    1.07090\n",
       "Name: test1, Length: 118, dtype: float64"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d = np.array(b*b-4*a*c)\n",
    "#d = (-b+np.sqrt(b*b-4*a*c))/(2*a)\n",
    "X1_new\n",
    "#print(np.array(d))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "#define f(x)\n",
    "def f(x):\n",
    "    a = theta4\n",
    "    b = theta5*x+theta2\n",
    "    c = theta0+theta1*x+theta3*x*x\n",
    "    X2_new_boundary1 = (-b+np.sqrt(b*b-4*a*c))/(2*a)\n",
    "    X2_new_boundary2 = (-b-np.sqrt(b*b-4*a*c))/(2*a)\n",
    "    return X2_new_boundary1,X2_new_boundary2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([0.1212617]), array([0.04679448]), array([0.02697935]), array([0.00872189]), array([-0.00830576]), array([-0.00830576]), array([-0.11718731]), array([-0.16040224]), array([-0.18016521]), array([-0.18965258]), array([-0.21671004]), array([-0.22530078]), array([-0.23369452]), array([-0.2499261]), array([-0.28761583]), array([-0.30846849]), array([-0.32171919]), array([-0.32816104]), array([-0.33448523]), array([-0.34069505]), array([-0.35278365]), array([-0.35866807]), array([-0.37013014]), array([-0.42186137]), array([-0.42656594]), array([-0.43119936]), array([-0.43574686]), array([-0.44021779]), array([-0.45318277]), array([-0.47336128]), array([-0.47336128]), array([-0.48465118]), array([-0.48828317]), array([-0.49185073]), array([-0.49185073]), array([-0.51193977]), array([-0.51193977]), array([-0.5181489]), array([-0.52412149]), array([-0.52986615]), array([-0.52986615]), array([-0.53264971]), array([-0.54066023]), array([-0.54572074]), array([-0.55055962]), array([-0.55055962]), array([-0.55518131]), array([-0.56170859]), array([-0.56775529]), array([-0.56775529]), array([-0.58002265]), array([-0.58002265]), array([-0.58588805]), array([-0.59313744]), array([-0.59416537]), array([-0.59514154]), array([-0.59852963]), array([-0.60052615]), array([-0.60280757]), array([-0.60310565]), array([-0.60354216]), array([-0.60379456]), array([-0.60355793]), array([-0.60282483]), array([-0.60105947]), array([-0.60105947]), array([-0.60047489]), array([-0.59135016]), array([-0.59135016]), array([-0.59009769]), array([-0.5887809]), array([-0.58285568]), array([-0.58285568]), array([-0.57390312]), array([-0.56073894]), array([-0.55572236]), array([-0.53219481]), array([-0.52181028]), array([-0.51814159]), array([-0.51814159]), array([-0.50647589]), array([-0.48925514]), array([-0.47987024]), array([-0.46991909]), array([-0.45383618]), array([-0.42349291]), array([-0.40276684]), array([-0.38769565]), array([-0.3714656]), array([-0.353902]), array([-0.34523055]), array([-0.33477608]), array([-0.33477608]), array([-0.32451646]), array([-0.26416907]), array([-0.26416907]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan])] [array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([0.41115349]), array([0.47870382]), array([0.49620931]), array([0.51216114]), array([0.52688317]), array([0.52688317]), array([0.61731967]), array([0.65131207]), array([0.66646378]), array([0.67364552]), array([0.69378609]), array([0.7000712]), array([0.70615931]), array([0.71777963]), array([0.74393719]), array([0.75787296]), array([0.76651241]), array([0.77064862]), array([0.77466719]), array([0.77857137]), array([0.78604871]), array([0.7896275]), array([0.79647831]), array([0.82515323]), array([0.82755217]), array([0.82987596]), array([0.83211783]), array([0.83428312]), array([0.84033121]), array([0.84898157]), array([0.84898157]), array([0.85335458]), array([0.85468094]), array([0.85594286]), array([0.85594286]), array([0.86219812]), array([0.86219812]), array([0.86379599]), array([0.86515732]), array([0.86628671]), array([0.86628671]), array([0.86676464]), array([0.86785827]), array([0.86830752]), array([0.86853594]), array([0.86853594]), array([0.86854596]), array([0.86815595]), array([0.86728536]), array([0.86728536]), array([0.86341226]), array([0.86341226]), array([0.86005458]), array([0.85346939]), array([0.85219128]), array([0.85086182]), array([0.84502699]), array([0.84010621]), array([0.83085948]), array([0.82885193]), array([0.82467718]), array([0.81801268]), array([0.81085516]), array([0.80320517]), array([0.79221728]), array([0.79221728]), array([0.78932708]), array([0.75714603]), array([0.75714603]), array([0.75358794]), array([0.74996551]), array([0.73481778]), array([0.73481778]), array([0.71433305]), array([0.68733509]), array([0.67770724]), array([0.63573465]), array([0.61843322]), array([0.61245891]), array([0.61245891]), array([0.59387632]), array([0.56742904]), array([0.55343288]), array([0.53887047]), array([0.51587067]), array([0.47399923]), array([0.44635628]), array([0.42667382]), array([0.40583252]), array([0.38365766]), array([0.37284469]), array([0.35992047]), array([0.35992047]), array([0.34735121]), array([0.27547567]), array([0.27547567]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan]), array([nan])]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\niubi\\Anaconda3\\envs\\env_ttest\\lib\\site-packages\\ipykernel_launcher.py:6: RuntimeWarning: invalid value encountered in sqrt\n",
      "  \n",
      "C:\\Users\\niubi\\Anaconda3\\envs\\env_ttest\\lib\\site-packages\\ipykernel_launcher.py:7: RuntimeWarning: invalid value encountered in sqrt\n",
      "  import sys\n"
     ]
    }
   ],
   "source": [
    "X2_new_boundary1 = []\n",
    "X2_new_boundary2 = []\n",
    "for x in X1_new:\n",
    "    X2_new_boundary1.append(f(x)[0])\n",
    "    X2_new_boundary2.append(f(x)[1])\n",
    "print(X2_new_boundary1,X2_new_boundary2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig3 = plt.figure()\n",
    "passed=plt.scatter(data.loc[:,'test1'][mask],data.loc[:,'test2'][mask])\n",
    "failed=plt.scatter(data.loc[:,'test1'][~mask],data.loc[:,'test2'][~mask])\n",
    "plt.plot(X1_new,X2_new_boundary1)\n",
    "plt.plot(X1_new,X2_new_boundary2)\n",
    "plt.title('test1-test2')\n",
    "plt.xlabel('test1')\n",
    "plt.ylabel('test2')\n",
    "plt.legend((passed,failed),('passed','failed'))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\niubi\\Anaconda3\\envs\\env_ttest\\lib\\site-packages\\ipykernel_launcher.py:6: RuntimeWarning: invalid value encountered in sqrt\n",
      "  \n",
      "C:\\Users\\niubi\\Anaconda3\\envs\\env_ttest\\lib\\site-packages\\ipykernel_launcher.py:7: RuntimeWarning: invalid value encountered in sqrt\n",
      "  import sys\n"
     ]
    }
   ],
   "source": [
    "X1_range = [-0.9 + x/10000 for x in range(0,19000)]\n",
    "X1_range = np.array(X1_range)\n",
    "X2_new_boundary1 = []\n",
    "X2_new_boundary2 = []\n",
    "for x in X1_range:\n",
    "    X2_new_boundary1.append(f(x)[0])\n",
    "    X2_new_boundary2.append(f(x)[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAETCAYAAAAoF0GbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO2deZgU9bWw3zPDIMguIIRhdSOigigakMUB2YJoCCK4ROLuNV6XxGuCJnrRuEX9XHNdQNRo3BVxQRQUEVxQx4C4giIojIIomyDoAOf749ftLHT39FJdVd193uepp2eqq6rP1FTXqbOLqmIYhmEY8SgKWgDDMAwj3JiiMAzDMBJiisIwDMNIiCkKwzAMIyGmKAzDMIyEmKIwDMMwEmKKwigoROQsEZlS7feHRWRsjO1+LyKn1Vr3qYh0T+Gz6ovIfiJytogUZyb5TsctjrFOIj/3T+IYl4hIPa9kMvIbu1CMvEdEioBiVa0EfgI2V3v7J6Aysl0JsENVtwPtgF1qHaoyum2t4wswByjBfafqAbsD3wHLgW+AfYEPqu3zEtAE2FLrcA2BDao6NLJdO+B5YGNk+03Aq8DhItIhIv9XEVmPE5GvgL+KyA/AC8DpwA/ArsD9wO2AAucC1yQ6b4YRxRSFUQgcCNwjItuAlsCuInJY5L3OQF8R+StQH/gj8DKwHdhW6zgaWWquVFUROQhorapbAUTkPuDfqvpSHJl+xN34Y/GzMlLVr0TkcKAUmAL8WVXfjHzGbcAMVX2++s4iMgIYiFNOtwNTgdFAW+AB4A5gu1q1rZEkpiiMvEdV/4NTFojIGcB+qnpB5Pf7gOdU9YkYu54hIsOr/b478EBE4ZSoaq9q720HHo885W/DKaA+IvI9IEBT4GBV3RjZvhynELbW+swGOMukOu2BecCNqvqmiByIUwB7AoeJyCVAuapeICJtgQNV9QUR2Tey/4fADZGfK9lZARpGQkxRGIXGImC5iOyFc9s8BHwRY7smwB2qem1dB4y4nnao6lHV1t1HDItCREYBFwIb2FlJRCkRkXnABcB7wGJgFNAq8n594HNgME6JFAH/iLzXELhORDpXO95WnOuqYV1/i2HEwoLZRkEgIi1EpDTy617AfsAzwFxgqYiU1dqlCTHiEXHYFfhRRNqJyJciUg70BW4UkfLIur0AVHWaqvYHVgFLgU+AdZHlk8i6b1S1v6q+CwwCXgMeBK4Uke+APpHP7QbcFvlZI8dfBhwBzK8m33ZiuMwMI1nMojAKhRNwT+APAwNVdayIHA+cAjwJPCQiR0VuzuCC2WNE5KRax6kPDFHVimrrdsM9sW8D1qpqLxEZBHyrqotEZCGwo9ZxDsI96f+Eiz8AVESOXz+6karOBGaKyLW4m/8lwH+AQ4BGOMuiBqq6RkROwT0IVg/c2/fdSAu7cIxC4TCcBbGDqpv2GcCmSDD6v3EB716R7KhewLHRwHEUEVnMzk/nHXDuq+opq+NwQfFFkd9rp8fWA6bhFExZZN0cXCzjuHh/hKoeKiK/ivy6H84CiR4vKmMfYDxwDs56qgDeBT4DurJzDMQwEmKuJyPviaS9DgNmVF+vqt9HlEQHVZ2Ku5nuISI9cTfsd+IcsrZ10BsXR/gRmBqpTzgcqIhkIP0PztUUlUdwcYqPgJVUuZ5WRtZNqONPWg08i7OQluBSbKdUe/9C4O+q+irOPfUBcBnOIrmfGFaIYSTCLAqjEGgC/ENVV4mIAs2ib4hIfeAxEblcVU+NrJsK3KuqsbKDiqj59F4PV6twgaquFZG7gEeA54C1wOU4a+JsXAwCYA/gSqpqKKKup2iWUomIvKWqG6p9bgOq4hDLIymzrXF1FU/hXGuIyBCgBzBWRLoCY4H9gX8CV6jqJZHtzKowksYUhZH3qOpa4PrIrwuBxpG4Abib7wfALIBIemkL4Lo4hyuhputmb1xm0ssicjcudnCNqj4SeX+wiPwGeCRSMd0QuA/4lioX1qZarwI8JyLHqOo3IvIUzoV0g4g0BybjCuyOVtV1InIyME1EjsQV912sqjtE5HZc3cUGETkPuDxSfPg+znIxjKQQq7kxDG8QkdaquibOe0WqWttlle7n7KuqH9f12SJSEom31N5/V1X9wQtZjMLAFIVhGIaREAtmG4ZhGAkxRWEYhmEkJC+D2a1atdLOnTsHLYZhGEZO8e67736rqq1rr89LRdG5c2fKy8uDFsMwDCOnEJFYfc/M9WQYhmEkxhSFYRiGkRBTFIZhGEZC8jJGYRiGEYvKykpWrlzJ1q3xRoEUBg0aNKB9+/aUlCTXycUUhWEYBcPKlStp0qQJnTt3xvVmLDxUle+++46VK1fSpUuXpPYx15NhGAXD1q1badmyZcEqCQARoWXLlilZVaYoDMMoKApZSURJ9RyYojAKg0WPwU37w8Tm7nXRY0FLZBg5g8UojPxn0WPw7HlQGRn/sGGF+x2g+9jg5DJCz7QFFVz/4mK+Wr+Fds0bctGwrozqWVr3jiHhvvvuA+Dkk0/O6DhmURj5z8tXVCmJKJVb3Pp8wywnz5i2oIKLp75PxfotKFCxfgsXT32faQsq6tw33zCLwsh/NqxMbX2uYpaTp1z/4mK2VG6vsW5L5Xauf3FxRlbFxIkTeeutt/jhhx9o3bo1Dz74IKeccgpffPEFrVq14oknnqBevXqMHz+eL774gpKSEqZOnUrTpk1jrjvzzDNZsmQJrVu35tFHH2XHjh2MHTuW9evXU1JSwgknnJDpqTCLwigAmrVPbX2uUkiWkw98tX5LSutToX///rz66qu0adOGadOmceSRR/Lqq6/StGlT/vOf/7B27VoWLVrEq6++yqWXXsqGDRtirnv66aeprKzk1VdfpWPHjkyfPp2pU6fSqVMnXnnlFTp16pSxrGCKwigEjrgMShrWXFfS0K3PJwrFcvKJds0bprQ+FQ4++GAAunfvzsqVK3nuuec49thj+fzzz9myZQstW7bk5JNPZvjw4dx77700adIk5rrFixfz5ptvUlZWxty5c1m9ejXLli2jR48eAPTq1StjWcEUhVEIdB8LR90KzToA4l6PujX/3DGFYjn5xEXDutKwpLjGuoYlxVw0rGvGx3777bcBWLBgAfXq1WP//fdn6tSplJY6l9aKFSto2bIlL774IqWlpUydOjXmuq5du3LccccxZ84cbr75Zrp160bHjh358MMPfz6+F1iMwigMuo/NP8VQmyMuqxmjgPy0nHwiGofIRtbTO++8Q1lZGW3btmXw4MEcf/zxPP/88zRs2JCKigr69u3Ls88+y1133cX27ds566yzaNu27U7rOnTowPTp0zn88MMREf7973/Tq1cvHnnkEcrKyigqKqJ3794Zy5uXM7N79eqlNo/CKEgWPeZiEhtWOkviiMvyX0GmwMcff8y+++4bqAwTJ06krKyMsrKyQOWIdS5E5F1V3clfZRaFYeQThWA55TgTJ04MWoSUsRiFYRiGkRBTFIWEFWMlj50rw/gZ3xWFiLQRkXl1bDNFRN4Ukb8lWmekQLQYa8MKQKuKsfL5Bpjuzb4Qz5VhJMBXRSEiLYB/AY0SbDMaKFbVPsAeIrJ3rHX+SJxHFFoxViY3+0I7V4ZRB35bFNuBccDGBNuUAdFv80ygX5x1NRCRM0WkXETK16xZ45W8+UOhFWNlcrMvtHNlxCdLLsgNGzYwaNAgysrKeOqpp+Jud8EFF+y0LpVsqYkTJzJnzpw0JKyJr1lPqroR6uyF3giIdt1aCxwUZ13tY08CJoFLj/VG4jyiWfvI03WM9T7jS0fOTG72ITpXRoBksXfWe++9x2GHHcaVV16ZcLubb745o8/xijAGszcB0Rr5xjgZY60zUiEkbSx868iZSZVySM6VETBZckHecsstnHfeefz73/+mrKyMFStWMHz4cPr3788pp5xSY9u6rIcffviBMWPGMGDAAM455xwA1q1bx+DBgxk4cKAn1gSE84b7LlWupR7A8jjrjFQISRuLRB05PSWTm31IzpURMFlyQZ5//vncfPPNnHzyycyZM4etW7dy7rnn8tJLL7F8+XJWr16d9LEmTZrE/vvvz9y5c/n6669ZtGgRkyZNYuTIkbzyyiuUlJRkJGuUQAvuRKQbcIKqVs9kmgbME5F2wK+B3oDGWGekSgiKsbLZkbMG0b8z3SrloM6VVVaHB59ckCUlJdx9993ce++9rF27li1bkv8uLF68mDfeeIM5c+awfv16KioqWLZsGePGjQNyvCmgqpZFXj+qpSSicYwyYD4wUFU3xFrnq8CGZ2SzI+dOdB8Lf/wAJq53r2G/4VpabrjwyQU5ZcoUxowZw8MPP0yjRnETQmPStWtXLrjgAubMmcOVV15Jx44dazQFXLhwoScyhtH1hKquU9XHVHVVonWGz3iQAZLNjpyB4GVWjKXlhgufXJBDhgzhmmuuYdCgQQBUVCQfrzvjjDOYMWMGAwYM4M4776RDhw6ceeaZPPnkk5SVlbFxY6IE0+SxpoD5jJdujNoZIOCertL44uT6HOKf8fCcAE7ZEOv7KM4qMjImDE0Bw4I1BTS8T+1L9LSb4vFG9SzNTcVQGw/PCWBpuUZoCaXryfAAr90YVoS2M16fE0vLrRsPXH356EVJlVTPgSmKfMXrm5hNT9sZr8+JpeUmxoNgf4MGDfjuu+8KWlmoKt999x0NGjRIeh9zPeUrXrsxbHrazmTjnIQghTm0eODqa9++PStXrqTQ2/w0aNCA9u2TvxeYoshXvL6JZVqXkI/YOfEXD6zkkpISunTp4pFAhYMpinwlGzexoJ92t22D1avhq6+gogK+/hrWroX166uWdetg82b48Uf46aeaiwjUqwfFxe41ujRuDE2bQpMmVa/Nm8Puu0ObNlVL27Zu2+q9yoI+J4WEBfsDwxRFPpOLN7HNm+HTT2HJEvcaXZYvh1WrYMeOnfdp2NDd2KNLkybQqhXUr++WXXaBaCuDbdvcsn27e/3pJ/eZ69bBl1/Cxo3w/fduieXHbtQIOneGLl2qls6dYa+9YJ993GcZ2cHcn4FhisIIjm++gQUL3LJwoXv99NOaN+h27dwNeNgwKC2tWtq1c0uLFpBCUC5ptm2Db791Fkz1paICli1zy6uvOoUSpbjYKYxu3WC//dzSvTt07ereyyXC2ErEXH2BYQV3hj+owuLF8Npr8Prr7vWzz6re79IFDjwQevRwN9i993Y33RRbGqRKRsV/qs4SWbbMWUAffQQffuiWzz6rsn4aNYKDDoJevdxyyCGw555QFNKkQ68LCY2cIV7BnSkKI3t88w3MnAkvvACzZrnfwbmF+vWDvn3dTbNHD+cy8ploy/Pq3WwblhRzzegDMi8I/PFHpxgXLoTycrcsWABbt7r3W7aE/v1hwAA4/HB3DsJiddy0f5xYQAfXM8vIW6wy28g+qvDBB/DEE/Dcc/Cf/7j1rVvD0KEwcKBTEPvsUzMgnAZetAFJ1PI8Y0Wxyy7O7dS9O4wf79ZVVjqr45134I03YO5cmDbNvde0qVOcRxwBw4c791WG5yhtrLjSqIUpCiMzVN1T8xNPuGXJEudSOewwuPJKd9Pr2dNTN0ttSyA6/AhI6QbvW8vzKCUlznLo0QNOP92tq6hwCmPuXBfz+J//cUuHDu7cDR/ulEezZtmRKRaWXWTUwhSFkR5r1sC//w333OOsiOJiZzH86U/w29+61NIIXjcB9MoSaNe8IRUxlIJnLc+TCQiXlsLxx7sFYMUK56p74QV49FGYPNml8PbaF9p/C502QWnH7AZxLbvIqIUpCiN5duxwMYfJk+GZZ1xm0K9+BXfcAWPGuNhDLbx6+q+OV5bARcO6xoxReNLyPN2mjB06wBlnuKWyEubPh3v/HzzzHMyPyNnxE3jpNDjvWxj2h8xlrY1lFxm1sGC2UTebN8MDD8Att8AnnzhrYfx4OOUU50tPQN9rZ8d8ai9t3pDXJwxKSxwvj5m1ludeBoRv2h/Wfwnf7ICPt8HHle5ncMHwk06CY4/11z2VDGFMsTUSYsFsI3W+/RZuvBHuvNOlgR58sHM3HXusK2RLgmzEAby0BLLW8tzLgPCGlS6w3abYLWW7wHfb4cNtULHKWR///d/wm984pTFsWFWBYVB43ebeCBRfE7lFZIqIvCkif4vz/tkiMieyLBSRu0Sknoh8WW39AX7KXJCsWQMTJriK42uvhUGDXN3DO+/AiScmrSQgO6NPR/Us5ZrRB1DavCGCsyQ8SWn1Ei87y8bap2UxHLWXs/Deesspi5dfhqOOgo4d4dJLXaV5UNi0vrzCN0UhIqOBYlXtA+whInvX3kZV71DVsshM7XnAZKA78HB0vaq+75fMBcfGjXDJJa747brr4Oijq9Jd+/ZNK10zW6NPR/Us5fUJg1h27ZG8PmFQuJQEeDtbItGxRODQQ+G221wPrGnTnOV31VXu/3j00fD8865liZ94ZVF5OWrWSBs/LYoyIPpfngn0i7ehiJQCbVS1HOgNjBSRtyMWSUx3mYicKSLlIlJe6C2EU2bbNrjrLlcJfc017uby0Ufw0EN1xiDqIiee/rOBl7Mlkj1W/frO/fTcc/D5584qfPttOPJI97+9+eaaLUeyiRcWlQfzJwxv8C2YLSJTgFtV9T0RGQocpKrXxtn2amCWqr4iIocAK1X1axG5H3hCVZ9J9FkFF8zOJGj4yitw7rmu7cSAAS4mcfDBmR/XCAc//QRPP+0sjnnzXMD7rLPgvPNcam628KINiFWI+068YLafFsUmIGo/N4732SJSBAwE5kRWLVLVryM/lwM7uawKmnSfur77Dk491cUftmyBqVNhzpyaSiKET3PTFlTQ99rZdJkwnb7XzmbaggqTJRH167vkg7lzXSxj2DC44QYXfxo/3j0gZAMvLCqrEA8NfiqKd6lyN/UAlsfZrj/wllaZOg+ISA8RKQZGAe9lVcpcI9WgoSo8/DDsu69Leb34YheH+O1va8YgAgxGxrsBR2syKtZvQamqyQjiBh0mWZJh2oIK+s7eRJcu4xlz4f0sPXa8ezg44AAYNy47CqP7WPfkP3G9e03VGrXxu6HBT0UxDThJRG4ExgIfisiVMbYbBsyt9vsVwAPAQuBNVX0p65J6TTYDcqk8da1b5yqATzjBBTrffReuvtrNc8jkuB6S6AacqCI70fGy8dSfjixBUfuclhc1Z+SexzL92fnuQeH557OrMNLFy4QAIyN8UxSquhEX0J4PDFTV91R1pzRZVb1EVadW+/0DVe2uqgeo6l/9ktczsu3CSfapa+5c12PoiSdcRswbb7iGdZke12MS3YBTrcnI5lO/732iMiDeOb36rW/ctbB8eU2FccIJrnV6HHxzuXmZEGBkhK91FKq6TlUfU9VVfn5uoGTbhVPXU5eqy2QqK3P+6jfecCmwdbW0DuhpLtENONWajGw+9WejPiRb1KnUWrasUhgTJrgU21/+Ei680I2arYbvLrdM3VdeYCm6/iqKgiTbLpxET12bNrlA5iWXOLfCwoUu5z7T42aRRDfgi4Z1paSoZi1HSZHErcnI5lN/tupDskHSSq1lS+eK/PRTV+F9881uwNINN/w8RyOXXG6eENKkDr8xRZFt/HDhxHrqWrYMeveGp56C6693NRGNG2d+3CxT5w24ds1fghrAbD7151J9SMpKrbQU7r7bPVgcdhhcdJGbOjh9ejhdbtl84rcKc8B6PWWfIFo2L1gAI0a4KWsvvABDhvz8Vtaa4HlEVJZYMva9djaV22vW/VRu17jtxbPaHZYs9onymETnNCEHHADTp8NLL7lam5Ej+Ve3w7hkwGmsbNamxqaBudyy3VPKUnQBUxTZx++WzS+/7FJdmzd3P1errM5Gy+9sEO8GnOrTbNo3yHygVrHkqCMuY9SENK+5wYPhvffg5ps5bOLlvLTkbP7ZZyyTDj2Gn+qVBOtyS/TE78V3zIY4AdZmPL949lk45hjo2hVmzID2NS/mbLT89pNcl983vKiKjseKFVSc9gdKZz3HkpYduX7snznyjFHBKd+JzYFY9zBxLtNMyea5DCFhqMw2ssn06U5JHHigS4Vtv/MTTyj9yymQSwHkQMmmX71DB0pnPgszZrDPrsrku85j1EM3u+r+IMh2DNBSdAFzPYWepGIKM2bA6NGuLmLmTOd2ikHWR39mmYJ2JaWCH3714cNdRf+f/+yyop5+2o3F7Re312fqJNNrzI8YYPexBacYamOupxBTO6YA7gm6RnbN22+7Golf/tLFJFq0yOx4Ru4Tp5neKlrTZ+st3ivY2bPh9NOrCvcmTsx8cFIqLh9rXukZ8VxPpihCTJ0++aVLoU8fl/Y6f74bUVoHYc96KgSy/j+IcZPdovX5S+XpPLPDPfF7/oCwaRP88Y8urfbQQ1069p57pn886xwbCDYKNQdJGFNYt86lwG7f7lxPSSgJyJ2UznzFl8yzWpl2q2jF1ZXH/qwkoKpIzrPPbNwYJk923WnPOMPFym6/HX73u7QGXllaariwYHaIiRc7KG26i2sRvWyZ8w13tWBuPMLWCty3yuZqxZJ9tt5SQ0lEyUoSw5gxsGgRHHSQu0ZPOy29QLd1jg0VpihCTLwsn0lfveSmmN10k7fBwxwlF9qSRwki88z3vlQdOri4xaWXwr33umt0+fLUjmGdY0OFKYps4FFLgVhtIiZ12kS3O6537cL/8Adv5c5BvG5Lnm3i3ZyLRLJm9QSSVlxcDFdcAc8842JpBx/sMvKSxdJSQ4UFs70mmwU633/vUmDr1XNtOlLt3ZSHJAr4fxVRHrURYNm1R2ZdtljEyjyrTaxAc6YB8ECTGD77zHUL+PBDuO4615U2nbiFkXUsmO0X2WwpcNFF8MUXbvaxKQmg7rbkYasbqV0LUiTC9loPa7UDzV4EwANNYthrL5eVd8op7hr+9FP45z8zT6E1fMNcT16TrWyNOXPgrrvc01jfvpkdKwPCFhyuqy15GCu5R/Us5fUJg1h27ZHsiGPRV1eAYXShpUyjRvDII67OYtIkGDkSNmwIWiqbNZEkvioKEZkiIm+KyE6T7SLv1xORL0VkTmQ5IJn9QkU2sjX+8zAcPxyaC7SaHtjFHMbgcCJlkAutwJMJNOd665WfKSpy8y6mTHHB7r59YUWMWgm/sFkTSeObohCR0UCxqvYB9hCRvWNs1h14WFXLIsv7Se4XHrzO1lj0GPzvWbDqRxjaALZUBHYxh/HJti5lUP3p/fUJg0KlJCC5QHMuTdNLhmk9h3He769h46fLWNW9F7OmzQtGEJs1kTR+WhRlQPTuNhOIldfZGxgpIm9HrIh6Se4XHrzO1njuf+Gl72GPYvhlJKQU0MWcyZNtNl1WYVcGiUjG6gmrCy0dolbpM6325fjjr6bkx630/N3RzH50lv/CWFFf0vgZzG4ERO8Oa4GDYmzzDjBYVb8WkfuBEUnuh4icCZwJ0LFjRw/FTgMvm4jNXAZbgcENamaK1HExZyPLJd3gcK7MwQiKugLN+dQMsbpV+mHbvRh74j944NFL6XXyaOjwopuo5xc2ayJp/LQoNgHRO0rjOJ+9SFW/jvxcDuyd5H6o6iRV7aWqvVq3bu2d1EGyfj28VeksiV/UfKJMdDFnK5aQ7pNtGF1WuUYuW03VqW19Lm3ZgWNPvI7vGjaBoUPhtdf8E8aK+pLGT0XxLlVuox7A8hjbPCAiPUSkGBgFvJfkfvnJ//0fbN0Bg5rWXF/HxZytG3O6weG8CcYaGRPL+qxotjvn/9ctblb3iBHw1luef25M16cV9SWNn66nacA8EWkH/Bo4TkSuVNXqmUxXAA/haqKeUdWXRKRprf16+yhzcFRWwh13uKess05LqY1yNm/M6eTjh7GewQiGeHPMTx19GPzhZTj8cNdYcPZs1y/KAxK7Pm3WRDL4pihUdaOIlAFDgOtUdRXOYqi+zQe4zKdE+4Ug+doHnn4aKiqcsuh+VEoXc9huzPFuDrkYjDUyo854y+zZMGAADBniJjXut1/Gn5nIws5VF57fWAuPsHLEEfD55679QXFx3dtXI4wDimwOhpE0S5dC//7uup8/37mkMqDLhOmha+USVqyFRy7x1Vfwyitw2WUpKwkIZ5aMzcEwkmbPPeH5552yGDHCWRbNmqV9uLBZ2LmIKYow8vjjoArjxqV9CLsxZ4ZZQAFz4IEwdapTFMcc4xRH/fppHcpcn5ljvZ7CyKOPQo8esO++QUtSkISxVUlBMmSIa/fx8suupX6abvJcaOUSdsyiCBtr1zq/7KWXBi1JwWLBzxAxfjwsWQJXXeVmWpx9dlqHMQs7M8yiCBuzZ7snp6FDg5akYLG6j5Bx+eXOBXXeef4W5Bk/Y4oibMyaBU2awKGHBi1JoATZzjzfmvDlPMXF8OCD0KWLm8ldkWMuwDxoZW6KImy8+aZrv1zAQ12CjhHkUxO+vKF5c5g2zU15POkk2B5/QmCoyJNW5qYowsSWLfDRR9BrpzTmgiLo3lAW/Awp3brBrbe61PHrrgtamuTIk1bmFswOE++9B9u3M2F5CY9OmF6waZlhiBFY8DOknHoqzJzpkj0GDYJf/SpoiRKTJ63MzaIIEQuedwNcXmtUWtBpmRYjMOIi4kYCt28PJ54IP/wQtESJycbEywAwRVGbAANP789bQGVRMV81rWqTHtZ23NkMNluMwEhI8+Zw332u1cdlIW8JnietzE1RVCfgwFPz1RV81bQ1O4pq3iTDlpaZ7WCzxQiMOikrg7POgptugnfeCVqa+ORJK3NrClidm/aPM/GqA/zxg9j7LHospRbgiXi/035slHqceNzVNdaXNm/I6xMGpXXMbND32tkxe+eETU4jz9mwwXWX3W03KC9Pu8WHUUW8poBmUVQn1cCTxxZI56If2dioeY11YXS5hCHYbBg0awa33w7vvw///GfQ0uQ1piiqk2rgyePUtyZbNrFv1/ahd7lYsNnwmrRjXkcfDcOHwxVXwJo12REuDwrmMsUURXVSDTx5nfq2YQOd92wX+tnIFmw2vCTjmNeNN8KmTdnpj5YnBXOZYoqiOqkGnrxMfdu2DfbeGzp1Sn1fn7Fgs+ElGRdY7rsvnPJbq+4AACAASURBVHMOTJ4MH8SJJaZLnhTMZYqvwWwRmQJ0A6ar6pUx3m8GPAIUA5uBccAO4PPIAnCuqr6f6HN8m3AXfdqofiGVNEwvq0EVVq6EXXeFli29ldMwQownE+jWrnW9oIYMgSee8E64ic0hnnQT13v3OSEh7WC2iNQTkZEicmit9cemKMBooFhV+wB7iMjeMTY7EbhRVYcCq4DhuBnaD6tqWWRJqCR8xcvUtx07oGNHuO02z8U0jDDjScxrt93g/PPhySddhwOvyJOCuUxJxvX0KDACuEhEZolI9Ayl2hi+DIg69mYC/WpvoKq3q+qsyK+tgW+A3sBIEXlbRKaISMy2IyJypoiUi0j5mmwFtWLRfaxLnZ243r2mmx9dXOy6xm7Y4K18hhFyPIt5/fGPLhPq8su9Ey5PCuYyJZleT41U9Q8AItIHmCoiF6fxWY2AaHRqLXBQvA0jn9NCVeeLyHZgsKp+LSL345TWM7X3UdVJwCRwrqc05AueZs1gfWbmbLojPG30pxEUns14b9ECLrjAKYqPPnJNBDMl+uDnUa1UrpKMotghIkeo6suq+qaIDMdZBj1S/KxNQFQ1NyaONSMiuwG3AcdEVi1S1R8jP5cDsVxW+UHz5hlZFNHskWhgMJo9AiT80qW7n2F4hWdNGM85B/7xD9dl9s47Mz8eOKVQYIqhNsm4no4D9on+oqprgV8Df03xs96lyt3UA1heewMRqQ88Dlysql9EVj8gIj1EpBgYBXjogAwZLVtmlAuebvZI0G29DcMzWrd2zQLvv98FuA1PSEZRbAaer75CVSuBTSIS130Ug2nASSJyIzAW+FBEamc+nYZzSf1VROaIyDjgCuABYCHwpqq+lMJn5hadOsHy5Wnvnm7FtFVaG3nF+ee72S6TJwctSd6Q0PUkIrcAi3FuoCOqrS8BmgKvi0grVd1c1wep6kYRKQOGANep6ipqWQeqegdwR4zdu9d1/LygSxc35vGnn9LqW9OuecOYPZjqyh5Jd79sYjETI20OOAAOPxzuuQf+/GfXmtzIiLosihdU9XZgu4iUiMgeInIMcCPOJXVCMkoiiqquU9XHIkrCqE2XLq6eIk2rIt3skbBVWgc9CtXIA8aPhyVL4O23g5YkL4irKERkd+BKEZkDHAw8DUwASnGuoGNV9Sk/hCwY9tvPvb6fXqlIuhXTYau0tpiJUZuUe0GNGQMNGrhYhZExSVVmi8gsXFrqU8B4XNHkQ6o6LLvipYdvldles3UrNG4Mf/kLXHVV0NIEhieVukbeUDsrD5zFW+fDzAknwIsvwurVUM+mPidDpm3GNRLAPhi4IbK0EZE9PJTRaNDAWRULFgQtSaBYd1qjOmlbmMcc4zKfXn89i9IVBsm08CgGGoqIAJep6qnADOBhYPcsy1d49OoFb73lWnoUKGGLmRjBknZW3tChLink2WezIFVhkVBRRNpl/AHndjoKWBvp2dQaOBNYnXUJC42BA91T0KJFQUsSGGGLmRjBkraF2aSJG5n6zE6NHIwUqctxdznwiap+LyKXALfjXMWbgP8H9ASWZVfEAmPgQPc6ezYceGCwsgSIZ5W6Rs5z0bCuMWMUSVmYI0a4th5ffumabhppkSjrqTnwMvCFiAzA9VFajlMMy3A1EGbTeU1pKXTtCrNm1b2tYRQAGVmYAwa419dey6qMgeHT9L1EFkULYCBQWW1dtHOsAL/EteW4ISuSFTIjRsD//R9s3AhNmwYtjWEETtoWZvfuzgX12msuCypMLHoss2aDtefhRKfvgee9qeJaFKq6TFUvBfoCh1Rb+gCvARcBr3gqjeE45hhXnT19etCSGEZuU1wMhx0WvswnL0as+jh9r64WHj2A66myKgRXe/GKiPwXYHeybNCnD7Rt64awHH980NIYRm7Ts6eL+VVWQklJ0NI4Et3kk7UGNqxMbX0G1BXMvhjX2rs5sBHYBnwvIkOAH4GvPZfIgKIiZ1VMmeLmUzRvHrREhpG77LefUxKffurNjAov8OIm36x9xCKJsd5j6qqj+AF4ENeUrzcuZnEi0AqYrKrbPJfIcJx6qqvUfuihoCUxjNwm2hrngw+ClaM6XoxY9XH6Xl2KojEuDXYzzoLYDKzAtfJ4WkSsn0IypJOZcNBBzmS+++7sy5eAlHvsGEbY6BpJo/3002DlqI4XN/nuY+GoW6FZB0Dc61G3ZmXIUl2up38CFaq6VET2BL7AuaMW4KwLq8yui0wyE047Df77v6G83FVs+4wXk++sXbgROLvu6sakfvVV0JJU4dWIVZ+m7yWqo2gM/ANXjT0cV2xXDCwBngQuA77NuoS5TiaZCb/7nUvtu/HG7MhWB5l2cbV24UZoKC11s17CRPex8McPYOJ69xricatxLQpV3SQig1V1s4isA46JzK5+VEQeA07HxTCMRGQStGrWDM48kx0338yYDkexQJr6+lSe6eS7RIrGrIr8IGcsxtLS4C2KTOsmAiRhjCI6lEhV31LVTdXWq6paMDsZMgxavXjEOLYrHDn7Ud+fyjPt4mojVvObnLIYmzVzBaxB4UXdRIAk22bcE0Rkioi8KSJ/S2WbZPYLLRkGra5473ue6XY4x7/3Aq03rQP8G+KTaRdXaxee3+TUgKlGjWBz0sM4vcfH4rhs4JuiiHSdLVbVPsAeIrJ3Mtsks1+oyTAz4av1W7j1sOOov62SP8x/rMb6bJNpF9d0FI1lWeUOOWUxNm4crKLwsTguG/g59qkMiN7pZgL9gNr5arG26ZnEfojImbjW53QMW5fIDDIT2jVvyBe047HuQzlxwQymHDKKlc3a+PZUnkkX1+h+yfqwvciyMvyjXfOGVMRQClm7NjPx8XfuDEOGZEeuZPCxOC4b+Ol6agREHw/XAm2S3CaZ/VDVSaraS1V7tW7d2jOhgyb6VH7rYcehIvxx3r9zaojPqJ6lvD5hEMuuPZLXJwxKeMPPKVeG4e+AqUx9/EuXujYeQeFjcVw28FNRbAKiZ6pxnM+OtU0y++UtUfdPcccO3NPrNxzz4SvcuedPefmEnVOuDMPfAVOZ+vg3bXJxiqDwsTguG/jpenoX5zaaD/QAYj0mxtpmZRL75TU/u3/OOQR++QaH33Y5nHSk64yZKyThNvDdlWFkjG8DpjL18W/eHKyiAN+K47KBn0/n04CTRORGYCzwoYhcWcc20+OsKwxqt/5YNgP+3/+D//wHJk8OWrrkSdJtYLOyjbhk2hvp229ht928k6fA8E1RqOpGXLB6PjBQVd9T1b/Vsc2GWOv8kjktvJo4Fe/muq+4cakXXxx8AVGyJOk2sFnZRlwy9fFXVLiiOy/xabpcGBBVDVoGz+nVq5eWl5f7/8G1+zqBu5jT8UXetH+cLIkOcORU6NEDBg92g+NFMpM720xsDsS6zsS1LzCMZEg360nVuZ3OPttZ5F7J4tV3PUSIyLuqulNjuYIKDGcdL4tqEvlk99kHrrkGnnsOHngg9WP7jRctlQ0j3d5Ia9bAli3gZdp8jhfQpYopCi/xsqimrpvreedB//5w/vmwMuRFOzmeGmjkOO+7Whz239+7Y+Z4AV2qmKLwEi+fnOu6uRYVwT33uMldJ5wA20LcdivHUwONHCc6sMhLRVFgVrIpCi/x8sk5mZvrXnvBXXfBvHkwcWImkmefHGqpbOQZCxbA7rtDm5i1uulRYFayn3UU+Y9Xw0iqH6+ufU88EV55Ba6+Gg4/PLk2BTnc7tgwUm5tPm8e9O3rrRBef9dDjmU95QM//ACHHgqrV7tpeJ06xd82T7M1jMKgdj8wcLU2cdOoV66EDh3gppvgggt8lDQ3saynfGbXXeHJJ1284uijXbuCeBRYtoaRX6TcD2zOHPc6YEB2BctzTFHkC127wmOPucDd+PGwY0fs7QosW8MPrDW6f6TcD+zpp6FtWzjwwCxKlf+Yosgnhg51BUVPPQWXxQmqFVi2RrbJqSlveUBKw7C2bIEZM+A3v3FZgkba2NnLN84/H04/Ha66Cu68c+f3CyxbIxZeWgDWGr0KPyyrlPqBzZrlmgH+9re+yZevWNZTviECd9wBq1bBH/4ArVrBmDFV7/uYrZFydooPeD0cyVqjO/waOpXSMKx773VpsQMH2lCsDDFFkY/UqwePPupSZU88EVq2dI0Eo/jQ7jisX8xEFkA6cllrdIfX5zURSbU2X7UKnn0WLrwQ6tf3Vb58TD8311NQZLvz5K67ui/K3ns7H+2bb3p7/DpI1SXjl1vAawvAWqM7QmdZ3XsvbN8Op52WUA7P5ct0El9IMUURBH5dTLvtBi++6LI+hg3zVVmk8sX0MyCcUjA0CcLYGj0IX7zX5zUjtm6FW2913ZX32SehHJ7Ll6fp56YogsDPi6m01FVut2njlMX8+d5/RgxS+WL6GRDOhgWQylzwbBNUFlaoLKv773eupwkTfl7lm3x5mn5uiiII/L6YqiuLoUPh9dez8znVSOWL6afbIowWgJcElYXl13mt01qqrITrroNDDoFBg3yXL1/Tz30LZovIFKAbMF1Va49AjW7TDHgEKAY2A+OAHcDnkQXgXFV9P/sSp0gqAaxm7eMMJcrixdS+vVMWRxzhgtyPPw5HHpncvmkE51LJTvE7IOzbnOcACDJWkO3zmlSCxOTJsHSpa9lRa6CXL//3Iy6L3SInx9PPfbEoRGQ0UKyqfYA9RGTvOJueCNyoqkOBVcBwoDvwsKqWRZZwKolUYg5B1TK0b+8apHXr5gLcyQw9yiCekqxLJlRuixwnVLECj6nTWtq40XVRPvxwGDnSfwEhb1vq+2VRlAHRO8tMoB/wae2NVPX2ar+2Br4BegMjRWQg8D5wlqqGa/hCophDrAskyM6Tu+/uLItRo1yrjzVr4E9/qrFJ9fqHNxtcQltS+NvSIKXc+BiEsV4jKC4a1jVm07x8ULp1WkvXXOOu5xtuCHY8sA/p536TFUUhIncB1a/Mw4EpkZ/XAgfVsX8foIWqzheR7cBgVf1aRO4HRgDPxNjnTOBMgI5ejjxMhnRiDkFeTE2awPPPw+9+5/LMly6FW26BevV2Mu931zUQ6zvncTwlXbdAWOs1giJTpRtmErooFy1yCuL3v4deOzU/NTIkK4pCVc+q/ruI3AJEbd/GJHB5ichuwG3AMZFVi1T1x8jP5UBMt5WqTgImgWsznrbw6RBEzCFTdtkFHnkELr4Yrr8ePv0UHntsJ/P+K21Fe/l25/1D8rf5WkiVI+RrDCautTR4LzjtGGjRwvU6MzzHr6ynd3HuJoAewPJYG4lIfeBx4GJV/SKy+gER6SEixcAo4L0sy5o6udA/KVaBX3GxyxCZMsW1Y+7dm5JlS2vsdt22sfyg9WseK0R/W+gKvYysETdzafYjbg7Lbbe5LgSG5/gyuEhEmgLzgJeBX+PiDqXACar6t2rbnQ1cTZUyuAP4EHgI5wB5RlX/WtfnBTK4KMxl+8kMK3r1VRg9mo1bKjn/yD/xyp6H/Lzp0UWvcUn9x2nLt6H72/peOzumO6K0eUNenzAoxh5GXvHWW9Cvn0vOePzxYGMTeUC8wUW+TbgTkRbAEGCuqq7K5mcV3IS7urhp/ziusQ5ufnWUpUvZMOJomi35iNv6jOOmfiewo6g48QSxgEl54pmRP6xfDz17gqqbi92iRdAS5TzxFIVvdRSquo6qzCfDT5INtu+5J80WlvPF8adw7tOP0vOrT7jmd5dyxujeob3p5nPw1kjAjh0ucL1ihUv5NiWRVax7bCGQSrC9YUM6TXsE7hlKv3POYfq950HZv3CewnCSr8FbIwEXXwzPPOOy9fr0CVqavMdaeBQC6QTbTz3VNRFs2tRVcl94oWu2ZhhBc999Lgnjv/4Lzj03aGkKAlMUhUC61aIHHgjvvusGIN14Ixx6KLwfvsJ4o4B47jk44wzXx+nWWy147RO+BbP9xILZWeD55+GUU2DDBrjiClfNXS9gz2WYM80M75k9G0aMgP33h5dfhmbNgpMlT6+9eMFssyiM5BgxwlkTI0bAX/4Cv/oVLFwYnDx5OiDGiMPrr8PRR8Nee7kZK0EriQK79kxRGMmz++7w5JMuX72iwrVKuOSSYGIXeTogxojBzJmuPX67djBrVvBFdQV47ZmiMFJDBMaMgY8+ck0Fr7kGuneHF17wV44EKb/ZmPAWxNQ4A/dgMnKkG+k7bx784hdBS5S3w4kSYYrCiE1dM7132w3uucc97QH8+teuOvbzz3c+VjaI02vqh4ZtPZ/wFtTUuFhyFIyyUnXB6rFj3RCiOXPc4K0wkKfDiRJhiiLs1HXDztZnJuuDHTLExS6uvdYFGLt1g0svhc2bsytjnJTf6yrHeT7hLaipcdUJi7KKidfXaGWlS309/3wXl5g5E5o390ZWL8iF3m4eY4oizAQVNEvVB7vLLi7AvXgxHHMMXHkldO3qmg1uy9LokDgpv//adGjMzTNpEhiGxoNhUFYx8foa/eYbF4+YNMkV1T35JDRq5KnIGZOnw4kSYYoizAQVNEvXB1taCg8+6HzJ7dvD6ae7+MXTTztXgtd0H+t6VU1c7167j83KhLcwTI0Lg7KKiZfX6OzZ0KOHK/S8/364+mooCuktKsa1l8+E9L9gAMEFzTL1wfbr577sTz4J27e7aXr9+sHcud7JWJuI++O1raN5fZfzOLrotZ/fynTCWxhGtYZBWcXEi2t0+3b43/+FwYOdi+ntt+Gkk7yRz/AEUxRhJqigmRc+WBEYPRo+/NC5EZYtc7OMy8rck6OXFkY194eglMq3/KP+FH5T9FrVzIIMekHFnYPgY3+pMCirmGR6jX70EfTt64o4x4+Hd95xVqgRKqwyO8wkM0cim5/tZeXpDz/A5Mnwj3/A11/DYYe5oPewYZm3YUi2jXqOE8rZ4Oleo5WVbrLi5Ze70by33QbHH599eY2EBD6Pwk/yRlFA/rUK2LrVpdVee61rEX3wwa7h4JgxUFKS3jEnNgdiXcfifMhGdkn1Gn3tNdfMb+FCOPZY+Oc/XTGnETimKIxw8dNPLmB5/fWwZIkLfp93nmv4lmoqZIFYFDnPypXw5z/Dww+7//cttzj3pBEarNeTES7q13dZUR9/DM8+C/vs424i7du7p82PP07+WAWY155TbNwIEye6lOmpU+Fvf4NPPjElkUP4pihEZIqIvCkif0uwTT0R+VJE5kSWA5Ld18hRiopci4aXX3bjLMeMgbvucoV7Awa4dNu6ekkVYF57TrB5s4tJdeniYhHDh7sHgL//PXy1EUZCfHE9icho4GhVPVlE7gGuUdVPY2x3EDBOVf+S6r7VMddTjvPNN244zeTJ8Nlnbszl+PHOAtl//6Cly4hQBqS9ZsMG97+74QZYvdq1d7niCqYV/yJ3//Z8ixXGIWjXUxlV87JnAv3ibNcbGCkib0esiHrJ7isiZ4pIuYiUr1mzxjPBjQDYfXfnhlq82FkaQ4fC7bfDAQe4YUrXX+/83TlGqNtweMGKFXDRRdChg3vdbz9XfPn880wr/kXu/u0F2Fa8NllRFCJyVzX30RzgXCB6RawF4nX3egcYrKqHAiXACKBRMvuq6iRV7aWqvVq3bu3RX2IESlGRm2T2yCOurfmtt0KDBk6JdOwIAwfC3XfDd98FLWlShLYNRyao8tqkx5jVYxCVnbuw7cYbWdF3EJSXOyXfzz3XZfNvz3qzxAJsK16brIwoU9Wzqv8uIrcA0WhjY+IrqEWq+mPk53Jgb2BTkvsa+Uzr1i7Ife65zh310EMufnHGGa6B3IABrgJ81CinREJIaNtwpEPEPbjp/+6k35fL2LBLI+4/aCT39jqa71q145qitoyqtnm2/vaolRZVQlFLBfDOrVWAbcVr49dN912qXEY9gOVxtntARHqISDEwCngvhX2NQmGvveCyy1zmTHm5a0i4erXrNtqpk6vN+Pvf3Xs7dgQt7c+Etg1Hsqxf72JHw4e7IUJ/+QufFTXmgpEXcug59/P3I85gZbM2MS2FbP3tWbFUanfDbdgi9nZ53Fa8Nn4NPZ4GzBORdsCvgd4i0g04QVWrZzJdATwECPCMqr4kIk1r7+uTzEbYEXFK4eCD4aqrXD3GU0/BtGlOkVx2mZuGNmSIi3MMHeoaFwbERcO61nj6hZC04ahG7WD7Xw9txYiVC11a64wZrv6lSxcXgxg/nt/+6/OYpY61LYVs/e2eWyq1K803rIDi+lBUAjsqq7YrsPRr3wruRKQFMASYq6qrsrmvZT0ZrF4NL73kZhnMnAmrIpdNt27Qv7/znffvD+vnw+y/+5bNUv1G/PvGb/PnkkfZdcsq/zNpYmTxTNvel0uefI8uKz9l0NJ3GLS0nB5fL6EIdRbEuHFw3HFukFCk7Urfa2dTEeOmXNq8Ia9PGFRjXTYyvlL5/KSIV7zZcDeo36hgs56sMtvIf1TdcKWZM12A9Y03XBEYQNMi6FgE7YvhF8XQoTEcc5s/vbSC7OMV/ewdCqt2wAph8bJ2tF1eQbMfN7MDYdEv9ublPQ/hgwP7ce8tZ8Zs+V07RgDOUvCraaLnn1/g7WDiKQq/XE+GERwiriNp9+7wP//j2lp/8AFcMRyWfAtfbIcPogOWfoC7xsPgZ+Cgg9x8hH33dbOaM21eWJ1EmTTZUhQ7djj33HV/gqXr4OvtbvnJvb3Hbp/zZNdBvNVhf+Z2OYjvGrlWKgJx50JEb8YJLYUs1iAk9fmp0Kx9nHYwhROPiIVZFEbhEn16VIVNCl9th693wKrtsKmNS8mN0rQp/PKXTmnsu68LqHfq5JZWrVJXIkk8uabtqtm61c0u/+STmsvHH8OmTW6bekCbYvhFEXSqB52K2dGkmD22PrjT4dJ240CwllM65Jq8HmMWhWHUJvr0KAJNBLoWQVeqmgmuXu0sj+hN9uOPYdYs+Ne/ah5n111dSm6nTs6X37r1zkuzZtC4sWtd0ahRnU+u1V0qxTu2s371d9z4rzk0+awtR+xez9WOrF0L337rFNqKFVVL7YLT0lKn5H7/exf4/+gqaPANFNdUblsbtqXh9mJvA85BWE6ZEJWpAKqwU8EsCqNwSffpccMG98T+xRfw5ZfuNbp8/bW7Uf/0U+LPrl8CxduqEtQFp7B2bQElDVm37ntKKn+iQeWP1NM6UnybNnWKqkOHqqVzZ2f57LOPm/eQ5N89bXtfbwPOBe7zzzXMojDCTRC9dNJ9emzWDHr2dEssVOH7753CiC4bNzq3z+bNbtm0Cb54D1a8DVs3u4yaXxwILbqAKs8tXM3WevX5sV59fiwuYWu9XdhSvwHrGzThn+cNcWm/u+3mXlNtsJfg7x6Fh4VqYD7/PMEsCiN4CtwvHAvP0z6Dwv63OUXQTQENIz7WS2cnQjsjO1WsBXxeYK4nI3isl85OeJ72GSTdx5piyHFMURjBY37smIzqWZqbisHIO8z1ZASPjTI1jFBjisIIHvNjG0aoMdeTEQ7Mj20YocUsCsMwDCMhpigMwzCMhJiiMAzDMBJiisIwjHBRexTposeClqjgsWC2YXhNEH2r8oVYo0ifPc/9bOcwMHyzKERkioi8KSJ/S7DN2SIyJ7IsFJG7RKSeiHxZbf0BfslsGCkTvdFtWAFo1Y3OnoqTw9q5hBJfFIWIjAaKVbUPsIeI7B1rO1W9Q1XLVLUMmAdMBroDD0fXq+r7fshsGGkR9I0u19021s4llPhlUZQB0St2JtAv0cYiUgq0UdVyoDcwUkTejlglMd1lInKmiJSLSPma2oNbDMMvgrzR5YM1E69tS4G3cwmarCiKiMso6iqaA5wLROdKrgXa1HGIc4A7Ij+/AwxW1UOBEmBErB1UdZKq9lLVXq1bt874bzCMtAjyRhe0NeMF1s4llGRFUajqWdVcRWXArUD0v9840eeKSBEwEJgTWbVIVb+O/FwOxHRbGUYoCPJGlw9uG2vnEkr8ynp6F+dumg/0ABYn2LY/8JZWTVR6QESuAj4ARgFXZ1NQw8iIIGcu50sXXmvnEjr8UhTTgHki0g74NdBbRLoBJ6hq7SyoYcDcar9fATyEmyr8jKq+5IfAhpE2Qd3ojrgs9jQ5c9sYGeLbKFQRaQEMAeaq6qpsfpaNQjUKFqvhMDIg3ihU3wruVHUdVZlPhmFkA3PbGFnAWngYhmEYCTFFYRiGYSTEFIVhGIaREFMUhmEYRkJMURiGYRgJMUVhGIZhJMQUhWEYhpEQ3wru/ERE1gBfBPDRrYBvA/jcZAizbBBu+cIsG4RbvjDLBuGWLwjZOqnqTl1V81JRBIWIlMeqagwDYZYNwi1fmGWDcMsXZtkg3PKFSTZzPRmGYRgJMUVhGIZhJMQUhbdMClqABIRZNgi3fGGWDcItX5hlg3DLFxrZLEZhGIZhJMQsCsMwDCMhpigMwzCMhJiiMAzDMBJiiiIFRGSKiLwpIrXHt1bf5mwRmRNZForIXSJST0S+rLb+gADliylLMvv6IFszEZkhIjNF5CkRqZ/tc5ekXDttk+3zleznBHHOUpAtkGstBfkC+65GPr+NiMyrY5vArr3qmKJIEhEZDRSrah9gDxHZO9Z2qnqHqpapahkwD5gMdAcejq5X1feDki+WLCnsm23ZTgRuVNWhwCpgeCx5/ZQr1jbZPl+pyIfP5yxF2Xy/1lKRL6jvakS+FsC/gEap/A1+nb/amKJInjKqRrnOBPol2lhESoE2qloO9AZGisjbkaeBbIygTVa+WLIku29WZVPV21V1VuTX1sA3ceT1U65Y2ySzny/yBXDOkpYtjhzJ7OeXfEAg31WA7cA4YGOCbcoI7tqrgSmKOETM0Kj5OQc4F6iIvL0WaFPHIc4B7oj8/A4wWFUPBUqAEQHKF0uWRknum23Zovv3AVqo6vw48npFMn93rG08PV8Zygf4es5SkS3r11qG8kXJ6nc1Fqq6UVU31LFZkNdeDbKlLXMeVT2raGhlDAAAA0FJREFU+u8icgvQMPJrYxIoWREpAgYCf42sWqSqP0Z+LgcyNhczkC+WLJuS3DfbsiEiuwG3AcckkNcrkvm7Y23j6fnKUD6/z1kqsmX9WstQPl++qxkQ5LVXA7Mokuddqsy8HsDyBNv2B97SqmrGB0Skh4gUA6OA9wKUL5YsqfxtWZNNROoDjwMXq2q0+282z10ycsXaJtvnK2n5AjhnScsWR47QnLsIQXxXkyXIa68mqmpLEgvQFHfR3Ah8DDQDugFXxtj2amB0td/3BxYB7wNXBSlfLFli7RuQbGcD64A5kWVcNs9dDLl6xJApluxZPV8pyufrOUtRNt+vtVTki2zn+3e11ufPibzG+j4Edu3VXqyFRwpEMhWGAHNVdVXQ8tQmE/my/beF9dwlI1esbfz6e8J63iB92ezcJU+Q114NOUxRGIZhGImwGIVhGIaREFMUhpEhItIkwXt7RFwFsd5rE3mVbMlmGF5gisIwMkBEGgMviUiZiDwuIveJyKMi0jOyyanAQSJydSRDqTozRORI4BZfhTaMFDFFYRgZoKqbcEVZK3HVtn/FpTC2EpGZwLbI+sXA2bUqfTep6nRgsYiUQHL9fwzDb6zgzjAyQER64yqiZ0Q8SHfiUisrgZ+i26nqv0SkKTBHRLZGVh8gIi8BxcDzIrKeOvr/GEYQmKIwjMz4EJgqIp9Fft/Ozv179hSRfwDXAIcDO3DtIZ4BRqnqVoCIIhkHPO2H4IaRLOZ6MowMUNXvgaNxFbKCUwDbIj9HWYrrJVQCnAZ8DUzDuavaVztWMv1/DMN3TFEYRub8BrgYpyCaAN9TpTSqo6o6CXgBGI9zUfXEMEKOKQrDyIBIU7nzgLuBB4ElQBdcO43ra23eVkTGVft9PnC4iOzig6iGkTamKAwjM04H3sBZEVcAE4GtwH/hMp1+iYtbNAIuBPbAWREPA1/gehCdLiIn+S24YSSLtfAwjAyI1EbsCrQEuqnqs5F1v8ANEhqEq5M4CliAmx/wjap+Ftl/NE5p9FU3OMcwQocpCsMIGBFpEgmKG0YoMUVhGIZhJMRiFIZhGEZCTFEYhmEYCTFFYRiGYSTEFIVhGIaREFMUhmEYRkL+P3trqhz5hAvbAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# coding:utf-8\n",
    "import matplotlib as mlp\n",
    "mlp.rcParams['font.family'] = 'SimHei'\n",
    "mlp.rcParams['axes.unicode_minus'] = False\n",
    "fig4 = plt.figure()\n",
    "passed=plt.scatter(data.loc[:,'test1'][mask],data.loc[:,'test2'][mask])\n",
    "failed=plt.scatter(data.loc[:,'test1'][~mask],data.loc[:,'test2'][~mask])\n",
    "plt.plot(X1_range,X2_new_boundary1,'r')\n",
    "plt.plot(X1_range,X2_new_boundary2,'r')\n",
    "plt.title('test1-test2')\n",
    "plt.xlabel('测试1')\n",
    "plt.ylabel('测试2')\n",
    "plt.title('芯片质量预测')\n",
    "plt.legend((passed,failed),('passed','failed'))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
